如何加入不同的表?

时间:2017-11-11 11:00:22

标签: php mysql sql join subquery

我尝试搜索相关的查询语句并已应用但无效。

我正在尝试在一个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

enter image description here

我希望加入奖励和运送所有表格,项目奖励有一对多的关系,奖励也是一对多的运费。如何在一个查询中结合所有这些?我也在尝试子查询,但我不知道如何在这些表中进行查询。 请解释一下如何在子查询或加入中工作? 如果不是好的做法也请向我解释别人的技巧。

更新

我尝试了这样使用子查询它说未知的列发货

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

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>