所以我的数据库中有2个表,它们是'锻炼'和'练习'。训练包含一行称为练习,这是一个以逗号分隔的练习ID列表 - 来自'练习'表,例如'1,2,3'。
我的问题是,我是否可以编写单个查询以允许我从workouts表中选择一行,例如id为1的行,并让MySQL从该行的列表中获取每个练习,返回它们在'锻炼'行内?
目前我正在使用PHP来选择锻炼行,然后针对每个练习提出单独的请求,导致严重的低效率。
我看了一下Joining rows as array from another table for each row并对group_concat()函数进行了一些研究,但我不确定这是我追求的。
更新 以下是2个表格:
答案 0 :(得分:0)
IMO,最好的方法是重新设计您的架构,以便有一个名为exercises_workouts
的交叉引用表(或类似的东西)。删除CSV字段。
这是关于实现多对多关系的更详细的页面:
http://www.tonymarston.net/php-mysql/many-to-many.html
注意:链接页面使用mysql_ *函数,但该方法的一般说明是有效的。您需要查看PDO以获取数据库访问权限。