我有4個表複式左聯接返回雙排
- 用戶
- 圖片
- 消息
- friendrequests
我試圖讓好友請求和新郵件一個查詢。它運作良好,但當我離開join'friendsreuqests'時,我得到多行。
這裏是我的查詢:
SELECT username,
f1.userid as reqId,
m1.msg, m1.userid,
p1.picHash, p1.extension, UNIX_TIMESTAMP(m1.sent) AS date
FROM users
LEFT JOIN pictures p1 ON p1.userid = users.id
LEFT JOIN messages m1 ON m1.contactid = users.id AND m1.delivered =0
LEFT JOIN friendrequests f1 ON f1.contactid = users.id AND f1.delivered=0 AND f1.request =1
WHERE users.id =7
ORDER BY date ASC
這是MySQL結果:
Kungen 3 gregegerg 1 dc825b1c8a35593be4d172db7 jpg 1369839537
Kungen 12 gregegerg 1 dc825b1c8a35593be4d172db7 jpg 1369839537
Kungen 3 HEJH 1 dc825b1c8a35593be4d172db7 jpg 1369839540
Kungen 12 HEJH 1 dc825b1c8a35593be4d172db7 jpg 1369839540
正如你看到有效果加倍。在這一點上我只想得到兩行。如果我有兩個新消息但沒有新朋友請求這兩行應該是NULL。
在SELECT之後添加DISTINCT會爲您提供不同的結果,但實際上您有4個不同的行,因此您可能想要合併不關心的字段或不選擇它們。 –
@Goat_CO再看一遍 - 第二列並不鮮明。由於該列('f1.userid')是他從「friendrequests」表中選擇的唯一一個,所以我懷疑他真正的問題在於那裏的數據。 – Blazemonger
distinct將不會幫助 – Kilise