我要試着解釋我的問題。我有一個問題想要如何命名它,所以我希望你會從描述中得到它。從表中選擇多個數據的計數
我有1張桌子。有3個重要欄目,打擾其他欄目並不重要。 人誰投贊成票,誰的人得到了表決,評級
我需要得到3個結果(計數)。
1)我需要誰給我1評級所有人的計數,但我沒有投票給他們還是我給他們評級0
2)所有的人whem我給等級1的數但他們沒有投票給我或者他們給我的等級0
3)給了我的評價人的數量,我給他們也排行榜1.
謝謝你的幫助。
我要試着解釋我的問題。我有一個問題想要如何命名它,所以我希望你會從描述中得到它。從表中選擇多個數據的計數
我有1張桌子。有3個重要欄目,打擾其他欄目並不重要。 人誰投贊成票,誰的人得到了表決,評級
我需要得到3個結果(計數)。
1)我需要誰給我1評級所有人的計數,但我沒有投票給他們還是我給他們評級0
2)所有的人whem我給等級1的數但他們沒有投票給我或者他們給我的等級0
3)給了我的評價人的數量,我給他們也排行榜1.
謝謝你的幫助。
爲了簡單起見,我假設你不需要在一個查詢中做到這一點。如果你這樣做,那麼你將不得不將它們合併爲子查詢。相反,稍微複雜一點,我認爲你可能想要一次爲所有用戶提取這些統計數據。
我寫這些查詢的模式
Voter (VoterID, Name)
Rating (VoterID, VotedOnID, Rating)
我測試了他們SQLFiddle
1)我需要誰給我1評級所有人的計數但我沒有投票給他們還是我給他們評級0
SELECT v.Name, COUNT(s.VoterID) AS "They vote 1, you vote 0 or null"
FROM Voter v
LEFT JOIN (
SELECT a.VoterID, a.VotedOnID
FROM Rating a
LEFT JOIN Rating b ON a.VotedOnID = b.VoterID
AND b.VotedOnID = a.VoterID
WHERE a.Rating = 1
AND (b.Rating IS NULL OR b.Rating = 0)
) s ON v.VoterID = s.VotedOnID
GROUP BY v.VoterID, v.Name;
2)所有的人whem我給的評價1,但他們沒有投票給我或者他們給我的等級0
SELECT v.Name, COUNT(s.VoterID) AS "You vote 1, they vote 0 or null"
FROM Voter v
LEFT JOIN (
SELECT a.VoterID, a.VotedOnID
FROM Rating a
LEFT JOIN Rating b ON a.VotedOnID = b.VoterID
AND b.VotedOnID = a.VoterID
WHERE a.Rating = 1
AND (b.Rating IS NULL OR b.Rating = 0)
) s ON v.VoterID = s.VoterID
GROUP BY v.VoterID, v.Name;
注:的計數除了最終的ON
條件外,這與上述查詢完全相同。
3)給我的等級[1],我給他們也排行榜1.
SELECT v.Name, COUNT(b.VotedOnID) AS "You both vote 1"
FROM Voter v
LEFT JOIN Rating a ON a.VoterID = v.VoterID
AND a.Rating = 1
LEFT JOIN Rating b ON a.VotedOnID = b.VoterID
AND b.VotedOnID = a.VoterID
AND b.Rating = 1
GROUP BY v.Name;
SELECT Count(Table1.Field), Count(Table2.Field), Count(Table3.Field)
FROM Table1,Table2, Table3
這遠沒有答案。解釋爲什麼? – datelligence
即使編輯它仍然有相同的效果,它根本沒有幫助 – tttpapi
編輯只是格式,認爲你可以放心地忽略這個答案。 – OGHaza
tttpapi,3人計),是它,你兩者都給了對方評分1? – OGHaza