0

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

4

2 回答 2

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

于 2013-05-23T15:09:48.607 回答
0

你可能需要联合?就像是:

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

于 2013-05-23T15:06:15.907 回答