【发布时间】:2013-05-03 23:24:06
【问题描述】:
这是我的查询:
SELECT
i.item,
COALESCE(COUNT(r.item_id), 0) AS TotalRating,
SUM(r.rating) as RatingSum,
re.tR as TotalReview,
AVG(r.rating) AS AverageRating
FROM items AS i
LEFT JOIN ratings AS r
ON (r.item_id = i.item_id)
LEFT JOIN
(SELECT item_id,COALESCE(COUNT(item_id),0) AS tR
FROM reviews
WHERE item_id = '{$itemId}') AS re
ON re.item_id = i.item_id
WHERE i.item_id = '{$itemId}';
我不断收到此错误:
#1048 - Column 'item_id' cannot be null
该行与表 reviews 中的子查询有关。我正在使用Coalesce;为什么它仍然说它为空?
【问题讨论】:
-
可能是指other
item_id -
COALESCE(COUNT(item_id),0)对我来说毫无意义,因为COUNT()永远不会返回NULL -
您可以使用示例数据创建 sqlfiddle 并为您的查询发布所需的输出吗?
-
您的数据库中某处的 item_id 字段中是否存在空值?
-
@peterm 查询完美运行,除非没有匹配的
item_id's 可以从表review中计数