Jag har filat på denna queryn i ett antal timmar nu och lyckades nästan. Det som fortfarande är fel är att den ger tillbaka samma rating och num_rating till alla restauranger.
Den query jag använde var:
SELECT restaurant_id, name, name_escaped, address, mapslink, phone,
( SELECT avg(rating) FROM comments) as rating,
( SELECT count(rating) FROM comments ) as num_ratings, category.category_name
FROM restaurants
LEFT JOIN category
ON restaurants.category_id=category.category_id
Jag har testa lite med GROUP BY för det delar upp rating och num_rating men det ger bara felmeddelanden när man slår ihop allt.
Sub-queryn SELECT avg(rating) FROM comments har ju ingen relation alls tills resten av frågan. Du får precis samma resultat som om du skulle ställa frågan 10 gånger om som en fristående fråga. Tala om för databasmotorn vilka kommentarer du vill få ut så funkar det nog bättre.
SELECT restaurant_id, name, name_escaped, address, mapslink, phone,
( SELECT avg(rating) FROM comments [B]WHERE comments.restaurant_id = restaurants.restaurant_id[/B]) as rating,
( SELECT count(rating) FROM comments [B]WHERE comments.restaurant_id = restaurants.restaurant_id[/B]) as num_ratings, category.category_name
FROM restaurants
LEFT JOIN category
ON restaurants.category_id=category.category_id