Php 如何连接不同的表?
我尝试搜索相关的查询语句并应用了它,但没有成功 我试图在一个GET调用中连接api的所有表,但我无法执行它。查询失败并获取错误 对于我显示的表,我的查询如下所示Php 如何连接不同的表?,php,mysql,sql,join,subquery,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 = shippi
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
您的查询有几个语法问题。要加入所有表,请编写:
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
。。。但是请注意,如果同一个项目有多个图像和多个奖励,则此查询将生成图像和奖励的所有组合,因为您的数据库架构没有定义哪个图像属于哪个奖励。此左内连接的最终位置是哪里?请共享“为您的表显示创建表”和您想要的最终结果如果您要从这四个表中选择所有数据,您将不知道要将哪个图像与哪个奖励组合,因此结果将是每个图像与每个奖励组合。您应该提供示例数据以及您希望这些示例数据的输出。Hi。请合理地设置代码的格式。同时阅读并行动。阅读一篇你所质疑的关系数据库的介绍,这只是一个问题。也可以在谷歌上搜索你的标题/问题的变体作为例子。好的,我会编辑它。非常感谢。谢谢,这很有效。这是示例表和查询。它也适用于我的真实查询。但表数据是重复的,因为我有1:m关系。你能建议我如何过滤吗???如果不是的话,我会用php来做。如果你要求得到空值而不是重复值,那么是的,你应该用php来做。虽然可以在SQL中执行,但它不是SQL的角色,并且会使查询变得相当复杂,输出很难排序。用PHP实现。