我試圖執行SQL Server中下面的SQL查詢2008SQL:SUM不COUNT工作,但效果很好獨自
String query = "SELECT SUM(r.rate),COUNT(q.best_answer_id) " +
"FROM questions_rating r,questions q " +
"WHERE r.question_id IN (SELECT question_id FROM questions WHERE user_id = 1) "+
"AND q.best_answer_id IN (SELECT answer_id FROM answers WHERE user_id = 1)";
這些都是表
Questions_Rating
id---------question_id-----------user_id--------rate
1 1 1 1
2 1 2 1
3 1 3 -1
4 2 1 -1
率只能是1或-1。
問題
question_id------question-------user_id-------best_answer_id
1 lala 1 3
2 lala 2 5
答案
answer_id---------answer--------user_id------question_id
1 lala 4 1
2 kaka 5 1
3 dada 6 1
4 fafa 7 2
5 tata 8 2
該查詢返回這些結果
SUM------COUNT
NULL 0
雖然它應該返回......
SUM------COUNT
1 0
請注意,下面的查詢返回正確的結果(1)
String query = "SELECT SUM(r.rate) " +
"FROM questions_rating r " +
"WHERE r.question_id IN (SELECT question_id FROM questions WHERE user_id = 1) ";
哎,你爲什麼要使用舊的式連接?你的加入標準是什麼?我似乎無法找到它? –
我想你應該看看如何使用RIGHT JOIN而不是使用子選擇 – Popnoodles
@popnoodles右連接會做什麼左連接不能? –