【发布时间】:2015-09-13 09:17:04
【问题描述】:
我有一个提供吉他课程的网站 (drupal)。我有一个包含练习内容类型的内容类型课程。练习通过用于处理课程-练习关系的特定表引用课程 nid。练习有图像(称为选项卡),图像通过文件表处理。对于给定的课程,我正在尝试构建一个 SQL 查询,该查询返回与课程练习相关的图像,然后随机选择一个。我知道它相当于某种连接,但我不知道它是左连接、内连接还是某种组合。
相关表中的相关列是
用于将练习链接到课程(课程)的表格。 field_lesson_target_id 是课程 id,entity_id 是练习 id。
练习的图像字段(选项卡)。 entity_id 是练习 id,field_tab_fid 是文件 id。
文件表(file)fid是文件id,在这种情况下会与tab表中的field_tab_fid相关。
这是小提琴:
【问题讨论】:
-
你能在你的应用层随机挑选图片吗?这比在查询中要容易得多。
-
是的,我可以稍后随机化结果
-
SELECT l.*, t.*, f.* 从课程中选择 l LEFT JOIN tab as t ON t.entity_id = l.entity_id LEFT JOIN file as f ON f.fid = t.field_tab_fid WHERE l.entity_id = '693' sqlfiddle.com/#!9/dbf63/3
-
您的查询正在返回一个练习 ID 为 693 的练习的文件。在我的示例中,课程 ID 为 672,因此查询必须返回引用课程 672 的所有练习的所有图像。下面是我的 SQL似乎有效,但是当有各种课程、练习的数据时,我还没有测试过。