【发布时间】:2011-10-21 16:32:52
【问题描述】:
所以我的数据库中有 2 个表,它们是“锻炼”和“锻炼”。锻炼包含一个名为练习的行,它是以逗号分隔的练习 ID 列表 - 来自“练习”表,例如'1,2,3'。
我的问题是,我是否可以编写一个查询来允许我从锻炼表中选择一行,比如一个 id 为 1 的行,并让 MySQL 从该行的列表中获取每个练习,然后返回它们在“锻炼”行内?
目前我正在使用 PHP 选择锻炼行,然后对每个锻炼提出单独的请求,导致效率严重低下。
我查看了Joining rows as array from another table for each row 并对 group_concat() 函数进行了一些研究,但我不确定这就是我所追求的。
更新 下面是两张表:
【问题讨论】:
-
重新设计您的架构以拥有一个名为
exercises_workouts(或类似名称)的交叉引用表。放弃 CSV 字段。这与数据库应该帮助您解决的问题背道而驰。 -
那么有一个只有“workoutid”和“exerciseid”字段的表格,然后从那里开始?
-
对,这是有道理的,如果您将其发布为我会接受的答案。
标签: php mysql relational-database left-join inner-join