查询以获取表中的1行,以及该行中引用的另一个表中的许多行

时间:2011-10-21 16:32:52

标签: php mysql relational-database left-join inner-join

所以我的数据库中有2个表,它们是'锻炼'和'练习'。训练包含一行称为练习,这是一个以逗号分隔的练习ID列表 - 来自'练习'表,例如'1,2,3'。

我的问题是,我是否可以编写单个查询以允许我从workouts表中选择一行,例如id为1的行,并让MySQL从该行的列表中获取每个练习,返回它们在'锻炼'行内?

目前我正在使用PHP来选择锻炼行,然后针对每个练习提出单独的请求,导致严重的低效率。

我看了一下Joining rows as array from another table for each row并对group_concat()函数进行了一些研究,但我不确定这是我追求的。

更新 以下是2个表格: enter image description here

1 个答案:

答案 0 :(得分:0)

IMO,最好的方法是重新设计您的架构,以便有一个名为exercises_workouts的交叉引用表(或类似的东西)。删除CSV字段。

这是关于实现多对多关系的更详细的页面:

http://www.tonymarston.net/php-mysql/many-to-many.html

注意:链接页面使用mysql_ *函数,但该方法的一般说明是有效的。您需要查看PDO以获取数据库访问权限。