我在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个表中获取数据。
答案 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.ID
和c.ID
都会在结果集中显示为ID
,并且您将只能够访问其中一个。
答案 1 :(得分:0)
您可能需要UNION?类似的东西:
Select * FROM cir_registry
Union
Select * FROM cir_entry
Union
Select * FROM cir_property