我有兩個表,其中一個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'(未評級)而非零(推測非常非常差)。 –