我有兩個連接同一個表的SQL查詢的基本問題。這聽起來很簡單,但我有一些麻煩。我希望,任何人都可以幫我解決這個問題:)在一個查詢中計數的同一個表上的多個連接
我有兩個小表:「人」(列:id,name,...)和「likes」(id,who,who)。人們可以設置彼此的「喜歡」。這種關係是多方面的。 我想得到與人民喜歡的表:收到「喜歡」的數量,交付和相互喜歡的數量。 當我只使用一個連接時,所有的都是正確的。但是對於兩個連接(或更多),MySQL將所有行組合(如預期的那樣),並且計數中出現錯誤的值。我不知道,我必須如何在這種情況下使用count /總和/組,由運營商:(我想在一個查詢做到不子查詢
我用這樣的查詢:
SELECT *, count(l1.whom), count(l2.whom)
FROM people p
LEFT JOIN likes l1 ON l1.who = p.id
LEFT JOIN likes l2 ON l2.whom = p.id
GROUP BY p.id;
SELECT p.id, name,
count(lwho.who) delivered_likes,
count(lwhom.whom) received_likes,
count(lmut.who) mutual_likes
FROM people AS p
LEFT JOIN likes AS lwho ON p.id = lwho.who
LEFT JOIN likes AS lwhom ON lwhom.id = lwho.id
LEFT JOIN likes AS lmut ON lwhom.who = lmut.whom AND lwhom.whom = lmut.who
GROUP BY p.id;
但它喜歡計算不正確的計數。
這只是問題的訓練和成績並不重要,但我想,有三個連接在我的最後一個查詢是很多。我可以使用2個連接嗎?
在此先感謝您的幫助。
你的加入看起來很好。但是,您應該確保按查詢中的所有列對您進行分組,而不是按照您的第二個查詢中的「name」進行分組。我無法忍受MySQL允許這樣做。 – Andrew