简体   繁体   中英

Select Query in MySQL for multiple tables

I m working in MySQL and have to write a select query.

I have related data in four tables. Now, the parent table may have data whose child data may not be present in lower tables.

I want to write a single query to get data from all four tables, irrespective of situation that data is present in child tables or not .

I have tried to write nested select and joins as below, but m not getting the data.

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)))

Please help me how to get data from all 4 tables.

If cir_registry is the master, you can select from that and LEFT JOIN the other tables in the order they're distant from 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

You should also alias the columns as above, otherwise, for example, p.ID and c.ID will both show up in the result set as ID , and you'll only be able to access one of them.

You might need UNION? Something like:

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

Check the official doc here: http://dev.mysql.com/doc/refman/5.0/en/union.html

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM