3

NULLこのクエリは、結果がないはずなのに、すべての値を含む 1 つのレコードを返しています。結果があるはずの場合は、正常に返されるようです。

内部結合を使用して、テーブルの主キーを使用してアカウントの詳細と評価を取得します。一部の非主キー (多対 1) のデフォルトは 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"
4

1 に答える 1

2

問題は、集計関数 (AVG) を使用していることです。これにより、実際に一致する行がなくても、(GROUP BY 句がない場合) 1 つの行が得られます。

これを試して:-

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
于 2013-06-26T13:06:49.393 に答える