在MySQL中为多个表选择Query

时间:2013-05-23 14:58:14

标签: mysql select join

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

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

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

我试图编写嵌套的select和join,如下所示,但是没有得到数据。

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个表中获取数据。

2 个答案:

答案 0 :(得分:1)

如果cir_registry是主要内容,您可以选择LEFT JOIN其他表格,使其远离cir_registry;

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,并且您将只能够访问其中一个。

答案 1 :(得分:0)

您可能需要UNION?类似的东西:

Select * FROM cir_registry
Union
Select * FROM cir_entry
Union
Select * FROM cir_property

在此查看官方文档:http://dev.mysql.com/doc/refman/5.0/en/union.html