Reputation: 117
Having a problem combining 2 JOINS. Both statements below work. I have also included the relevant fields in the 2 DBs. My question is: 1) How do I combine the 2 statements into 1 statement? 2) How do I reference the rows in my php to distinguish if the result was from the mmpreID JOIN or the mmparID JOIN?
Thanks
DB: matchmaker
mmpreID
mmparID
DB: users
uID
ufname
ulname
SELECT matchmaker.mmpreID, matchmaker.mmparID, users.uID, users.ufname, users.ulname
FROM matchmaker
LEFT JOIN users ON matchmaker.mmparID = users.uID
SELECT matchmaker.mmpreID, matchmaker.mmparID, users.uID, users.ufname, users.ulname
FROM matchmaker
LEFT JOIN users ON matchmaker.mmpreID = users.uID
Upvotes: 2
Views: 1939
Reputation: 171351
SELECT m.mmpreID, m.mmparID, u.uID, u.ufname, u.ulname,
case
when m.mmparID = u.uID then 'mmparID'
when m.mmpreID = u.uID then 'mmpreID'
else null
end as Source
FROM matchmaker m
LEFT JOIN users u ON m.mmparID = u.uID or m.mmpreID = u.uID
Update:
SELECT m.mmpreID, m.mmparID,
upar.uID as upar_UID,
upar.ufname as upar_UFNAME,
upar.ulname as upar_ULNAME,
upre.uID as upre_UID,
upre.ufname as upre_UFNAME,
upre.ulname as upre_ULNAME
FROM matchmaker m
LEFT JOIN users upar ON m.mmparID = upar.uID
LEFT JOIN users upre ON m.mmpreID = upre.uID
Upvotes: 5
Reputation: 2141
Add UNION and another column to see where it came from
SELECT matchmaker.mmpreID, matchmaker.mmparID, users.uID,
users.ufname, users.ulname, "mmpar only" as source
FROM matchmaker
LEFT JOIN users ON matchmaker.mmparID = users.uID AND matchmaker.mmparID != matchmaker.mmpreID
UNION
SELECT matchmaker.mmpreID, matchmaker.mmparID, users.uID,
users.ufname, users.ulname, "mmpre only" as source
FROM matchmaker
LEFT JOIN users ON matchmaker.mmpreID = users.uID
AND matchmaker.mmparID != matchmaker.mmpreID
UNION
SELECT matchmaker.mmpreID, matchmaker.mmparID, users.uID,
users.ufname, users.ulname, "both" as source
FROM matchmaker
LEFT JOIN users ON matchmaker.mmpreID = users.uID AND matchmaker.mmparID = matchmaker.mmpreID
Revised the answer above to include 3 possible outcomes 1. uID only matches mmparID 2. uID only matches mmpreID 3. uID matches both mmparID and mmpreID
Yes, UNIONS are not very efficient but they are necessary at times
Upvotes: -1