我尝试搜索相关的查询语句并已应用但无效。
我正在尝试在一个GET呼叫中加入我的api的所有表,但我无法执行它。查询失败并获得错误。
对于我所显示的表格,我的查询看起来像这样。
SELECT projects.*, images.*, rewards.*, shipping.*
FROM projects
LEFT JOIN rewards ON rewards.projects_id = projects.id
LEFT INNER JOIN rewards ON rewards.id = shipping.reward_id
LEFT JOIN images ON projects.id = images.project_id
WHERE projects.id = 1
我希望加入奖励和运送所有表格,项目奖励有一对多的关系,奖励也是一对多的运费。如何在一个查询中结合所有这些?我也在尝试子查询,但我不知道如何在这些表中进行查询。 请解释一下如何在子查询或加入中工作? 如果不是好的做法也请向我解释别人的技巧。
更新
我尝试了这样使用子查询它说未知的列发货
SELECT projects.*, rewards.*, images.image, shipping = (SELECT *
FROM shipping
WHERE shipping.reward_id IN (SELECT * FROM rewards WHERE rewards.project_id = 1))
FROM projects JOIN rewards ON rewards.project_id = projects.id
LEFT JOIN images ON projects.id = images.project_id
WHERE projects.id = 1
答案 0 :(得分:1)
您的查询有几个语法问题。要加入所有表,您可以写:
SELECT projects.title, rewards.price, images.images, shipping.shipping
FROM projects
LEFT JOIN images ON images.project_id = projects.id
LEFT JOIN rewards ON rewards.project_id = projects.id
LEFT JOIN shipping ON shipping.rewards_id = rewards.id
WHERE projects.id = 1
...但要注意,如果同一个项目有很多图像和许多奖励,此查询将生成图像和奖励的所有组合,因为您的数据库架构没有定义哪个图像属于哪个奖励。 / p>