2016-06-17 5 views
-2

mit Gruppe habe ich 2 Tabellen:SQL-Abfrage für 2 Tabellen von

restaurant(id,name); 
rating(id,rating,restaurant); 

Was ich tue, ist:

select 
    rt.name, avg(rg.rating) as rating 
from 
    restaurant rt, 
    rating rg 
where 
    rg.restaurant = rt.id 
group by rg.restaurant; 

Das gibt mir einen Tisch mit Restaurant Namen und durchschnittliche Bewertung für jedes Restaurant. Was ich brauche, ist auch der Name der Tabellen, für die es noch keine Bewertung gibt.

+2

Sie sind wahrscheinlich für eine Suche ['LINKE VERBINDUNG] (http://dev.mysql.com/doc/refman/5.7/en/join.html) –

+0

Können Sie mir die Anfrage dafür geben? –

Antwort

-2

SQL Fiddle

SELECT 
restaurant.Name, avg(rating.Rating) 
From restaurant 
LEFT JOIN rating on rating.restaurant = restaurant.ID 
GROUP BY rating.restaurant 

für Noch keine Bewertung Restaurant: SQL Fiddle

SELECT 
restaurant.Name, avg(rating.Rating) 
From restaurant 
LEFT JOIN rating on rating.restaurant = restaurant.ID 
GROUP BY rating.restaurant 
HAVING  avg(rating.Rating) <=0 
+0

erfüllen OP Anforderung, bitte entfernen Sie die Down-Abstimmung. – Teddybugs

0

versuchen diese als Matt im Kommentar erwähnt:

SELECT `rt`.`name`, AVG(`rg`.`rating`) AS `rating` 
FROM `restaurant` `rt`, `rating` `rg` 
LEFT JOIN `rg`.`restaurant` = `rt`.`id` GROUP BY `rg`.`restaurant`