我有两个表,其中一个products
和另一个ratings
。列出所有的行,并添加一个额外的字段,如果行在其他表中退出
我想列出所有products
,如果用户对产品进行了评级(然后r.by是userId,r.rating是评级),那么我想添加一个userrating
= r.rating else userrating = 0 to SQL响应。
它只适用于一个用户,所以我不知道它有什么问题。
$sql = "SELECT DISTINCT p.id, p.rating, CASE WHEN r.by=:USER_ID
THEN r.rating ELSE 0 END AS userrating FROM `products` p
LEFT OUTER JOIN `ratings` r
ON r.productid=p.id
WHERE p.moderated=1
order by p.rating desc";
编辑:
我需要列出所有的产品,如果用户的产品?,我需要连接的“userrating” =(用户等级)的用户评级。
'r.by = :如果特定用户ID匹配,则USER_ID'正在分配一个值。 – PinnyM
“它只适用于一个用户,所以我不知道它有什么问题。”嗯,也许这没什么不妥,你也没有问题。顺便提一下,问题是什么? –
如果该产品没有任何关联评分,则r.rating和r.by将为NULL。这还不够吗?你可以有'CASE当r.by IS NULL那么r.rating ELSE 0 END',或者更紧凑的'COALESCE(r.rating,0)',或者更紧凑的(也许更正确的)'r .rating“,这将给予评价为'NULL'(未评级)而非零(推测非常非常差)。 –