2012-10-19 21 views
7

Bu SQL deyiminde neyin yanlış olduğunu ve neden sonuç üretmediğimi anlayamıyorum. LEFT JOIN işe yarıyorsa, bu yüzden neyin var?İç içe SELECT deyimi LEFT JOIN ile

SELECT b.id, r.avg_rating 
FROM items AS b 
LEFT JOIN 
(
    SELECT avg(rating) as avg_rating 
    FROM ratings 
    GROUP BY item_id 
) AS r 
    ON b.id = r.item_id 
WHERE b.creator = " . $user_id . " 
AND b.active = 1 
AND b.deleted = 0 
ORDER BY b.order ASC, b.added DESC 

Yardımı büyük ölçüde takdir ederdim. Size SQL ustası John teşekkür,

cevap

19

(Ben çalışacağını garanti ) sizin alt sorguda item_id sütun ekleyin böylece ON fıkra tabii r.item_id

SELECT item_id, avg(rating) as avg_rating 
FROM ratings 
GROUP BY item_id 
+6

Ah evet bulabilirsiniz! Cevabını bana izin verdiğinde 12 dakika içinde kabul edeceğim! – Wasim