开发者

How to get a LEFT JOINED query result without all of the NULLs

开发者 https://www.devze.com 2023-01-23 07:17 出处:网络
I am LEFT JOINing multiple tables as such: SELECT * FROM table1 LEFT 开发者_StackOverflow社区JOIN table2 ON table1.id = table2.fid

I am LEFT JOINing multiple tables as such:

SELECT * FROM table1
LEFT 开发者_StackOverflow社区JOIN table2 ON table1.id = table2.fid
LEFT JOIN table3 ON table1.id = table3.fid
LEFT JOIN table4 ON table1.id = table4.fid
LEFT JOIN table5 ON table1.id = table5.fid
LEFT JOIN table6 ON table1.id = table6.fid
WHERE table2.id = '5184'

Reason being is simply because I tried regular JOIN and no results are returned unless at least one record exists in tables1-6 which is often not the case. As it stands this returns the info I want, but the problem is that a lot of the field names repeat and when I do a 'mysql_fetch_array()' in PHP it hides any field with a duplicate name.

What type of query can I do to avoid this? At the very least, how do I construct the query such that it doesn't include all the double fields which are NULL?

Thanks


I can't help but notice that you aren't selecting anything from your left joined tables. It's my understanding that joins are typically used to pull data from secondary tables where something in those tables matches a field in the primary table. I pulled this example from W3 schools:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName

And unless this is a typo, you are selecting everything from table 1 where an id column = 5186 in table 2.

You state that your query returns the info you want, but with many nulls and overwritten values. To fix this, I would restructure your query to follow the typical format shown above, and make sure you have a proper use of the left join statement.

EDIT AFTER OP COMMENTS:

You are naming a row id from table2, so I assume you should start by pulling fid from table 2 where table2.id = 5186, then left join from the other tables where table1.id = table2.fid.

SELECT table2.fid, table1.id, table3.id, [add other tables here, and revise field names to select the ones you want]
FROM table2
LEFT JOIN table1 ON table1.id = table2.fid
LEFT JOIN table 3 ON table3.fid = table1.id
[add left joins to other tables here]
WHERE table2.id = '5186'

If this doesn't help, I suggest being more specific towards what information the tables hold, and what you are searching for. A little more detail may help us help you.

0

精彩评论

暂无评论...
验证码 换一张
取 消