mysql - 在MySQL中选择查询多个表

标签 mysql select join

我正在 MySQL 中工作,必须编写一个选择查询。

我在四个表中有相关​​数据。现在,父表中可能有其子数据可能不存在于下级表中的数据。

我想编写一个查询来从所有四个表中获取数据,无论数据是否存在于子表中

我尝试编写嵌套选择和连接,如下所示,但我没有获取数据。

select * from property p where p.Re_ID in 
  (select Re_id from entry e where e.Re_ID in
    (select Re_id from category c where c.Re_ID in
      (select id from re)))

请帮助我如何从所有 4 个表中获取数据。

最佳答案

如果 cir_registry 是主表,您可以从中进行选择,然后按照与 cir_registry 的远近顺序LEFT JOIN 其他表;

SELECT r.ID rId, r.Description rDescription, c.ID cId ...
       ...
       p.Data_Type pDataType 
FROM cir_registry r
LEFT JOIN cir_category c ON c.Registry_ID = r.ID
LEFT JOIN cir_entry    e ON e.Category_ID = c.ID
LEFT JOIN cir_property p ON p.Entry_IDInSource = e.IDInSource

您还应该为上面的列添加别名,否则,例如,p.IDc.ID 都将在结果集中显示为 ID,并且您只能访问其中一个。

关于mysql - 在MySQL中选择查询多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16717331/

相关文章:

php - 导入的 CSV 缺少字段

sql-server - 按公共(public)列分组的多个表中的值求和

php - Codeigniter 奇怪的查询结果

r - 连接两个具有部分公共(public)和不相等列的数据框

php - 在 php/mysql 中跟踪时间冲突的正确算法是什么?

php - Div 没有在 mysql 结果 php 中被回显

mysql - 如何使用 MySQL 字符串函数在单词中插入空格?

c - 使用 select() 时,我可以在 readfds 和 writefds 集中添加相同的描述符吗?

MySQL 根据另一列中的数字选择值 X 次

php - 如何在 Controller 中从 MySQL 访问数据属性