查询获取表中的1行,并从该行中引用另一个表中的许多行
问题描述:
因此,我在我的数据库中有2个表,它们是“锻炼”和“练习”。锻炼包含一个称为练习的行,这是一个用逗号分隔的练习ID列表 - 例如,从“练习”表中选择。 '1,2,3'。查询获取表中的1行,并从该行中引用另一个表中的许多行
我的问题是,我可以编写一个查询来允许我从锻炼表中选择一行,比如说ID为1的一行,并让MySQL从该行的列表中获取每个练习,返回他们在“锻炼”行内?
目前我正在使用PHP来选择锻炼行,然后为每个练习提出个别请求,导致严重的低效率。
我看了一眼Joining rows as array from another table for each row,并且对group_concat()函数做了一些研究,但我不确定那是什么。
更新 这里有2个表:
答
IMO,最好的办法是重新设计你的架构有一个交叉引用表称为exercises_workouts
(或类似的东西)。删除CSV字段。
下面是进入更多细节上实施多对许多关系页面:
http://www.tonymarston.net/php-mysql/many-to-many.html
注:所链接的页面使用mysql_ *功能,但该方法的一般解释立场。您需要查看PDO以进行数据库访问。
+0
刚刚绘制出我的数据库的ERD,它有点显示我以前的解决方案是多么愚蠢:) –
重新设计您的模式,以创建一个名为'exercises_workouts'(或类似的东西)的交叉引用表。放弃CSV字段。这与数据库应该帮助您解决的问题背道而驰。 – webbiedave
那么有一张桌子上只有字段'workoutid'和'exerciseid'并从那里出发? –
是的。 http://www.tonymarston.net/php-mysql/many-to-many.html – webbiedave