[ad_1]
I think what you’re looking for is to do a LEFT JOIN
starting from the main-table to return all records from the main table regardless if they have valid data in the joined ones (as indicated by the top left 2 circles in the graphic)
JOIN’s happen in succession, so if you have 4 tables to join, and you always want all the records from your main table, you need to continue LEFT JOIN
throughout, for example:
SELECT * FROM main_table
LEFT JOIN sub_table ON main_table.ID = sub_table.main_table_ID
LEFT JOIN sub_sub_table on main_table.ID = sub_sub_table.main_table_ID
If you INNER JOIN
the sub_sub_table, it will immediately shrink your result set down even if you did a LEFT JOIN
on the sub_table.
Remember, when doing LEFT JOIN
, you need to account for NULL
values being returned. Because if no record can be joined with the main_table, a LEFT JOIN
forces that field to appear regardless and will contain a NULL. INNER JOIN
will obviously just “throw away” the row instead because there’s no valid link between the two (no corresponding record based on the ID’s you’ve joined)
However, you mention you have a where statement that filters out the rows you’re looking for, so your question on the JOIN’s are null & void because that is not your real problem. (This is if I understand your comments correctly)
[ad_2]