2012-10-19 13 views
7

Non riesco a capire cosa c'è di sbagliato in questa istruzione SQL e perché non produce risultati. Se tolgo LEFT JOIN è funzionante, quindi cosa c'è che non va?Istruzione SELECT nidificata con LEFT JOIN

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 

Apprezzeremmo molto l'aiuto.

risposta

19

aggiungere la colonna item_id nel subquery (vi garantisco che funzionerà) in modo che la clausola di ON può trovare r.item_id

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

Ah sì, naturalmente, grazie padrone SQL John! Accetterò la tua risposta tra 12 minuti quando me lo consente! – Wasim