2013-06-26 60 views
2

當不應該有結果時,此查詢返回1條記錄和所有NULL值。當應該有結果時,它似乎返回正常。當它不應該返回結果時,內部連接查詢返回所有NULL結果

我使用內部聯接來使用其表主鍵獲取某些帳戶詳細信息和評分。一些非主要(多對一)鍵的默認值爲NULL - 也許這會導致它以某種方式連接到本身?

爲什麼它返回一個全空值的行?

SELECT a.account_id, a.first_name, a.second_name, a.points, c.body, c.creation_time, AVG(t.rating_overall) 
FROM comments AS c 
INNER JOIN accounts AS a 
ON c.account_id=a.account_id 
INNER JOIN ratings AS t 
ON t.blogger_id=a.account_id 
WHERE c.blog_id = ? 
ORDER BY c.creation_time ASC" 
+0

嘗試使用像'ISNULL(check_expression,replacement_value)'只是把替換值空白或0 –

+0

對不起生病改變我問:我的意思某些鍵不是主要 –

+3

的AVG場可能是原因。我認爲它給了你所有領域的平均排名,即使沒有領域的平均水平。 – Kickstart

回答

2

問題是您正在使用聚合函數(AVG)。這將給你一行(在GROUP BY子句的缺失處),即使沒有實際匹配的行。

試試這個: -

SELECT a.account_id, a.first_name, a.second_name, a.points, c.body, c.creation_time, AVG(t.rating_overall) 
FROM comments AS c 
INNER JOIN accounts AS a 
ON c.account_id=a.account_id 
INNER JOIN ratings AS t 
ON t.blogger_id=a.account_id 
WHERE c.blog_id = ? 
GROUP BY a.account_id, a.first_name, a.second_name, a.points, c.body, c.creation_time 
ORDER BY c.creation_time ASC 
+0

MySQL返回一個空的結果集(即零行)。 (查詢花了0.0010秒)謝謝YOOOU !! ;X –