2009-12-11 9 views
0

j'ai 2 tables appeléesSQL JOIN question

  • Localisation (id, nom)
  • personne (id, nom, location_id)

Une personne a un identifiant de localisation qui joint ces les tables . . Je voudrais une requête SQL qui me donne chaque emplacement et le nombre de table de personne pour cet ID.

je pouvais faire quelque chose comme ça et puis ajoutez les enregistrements dans le code, mais je veux trouver un moyen que je reçois une seule ligne par région avec le nombre de personnes dans cette région

SELECT l.*, r.id from Location l 
inner join Person r 
on r.location_id = l.id 
order by l.name asc 

Répondre

4

Vous voulez d'utiliser des agrégats et la clause GROUP BY

SELECT l.id, l.name, count(r.id)  
    FROM Location l  
    INNER JOIN Person r on r.location_id = l.id  
    GROUP BY l.id., l.name  
    ORDER BY l.name asc 
+0

+1: ... me battre de 3 secondes! –

0
SELECT lo.name, COUNT(*) 
    FROM LOCATION lo 
    JOIN PERSON p ON p.location_id = lo.id 
GROUP BY lo.name 
ORDER BY lo.name 
0

essayer

select co UNT (*), Location.name, Location.id de Lieu, personne où Person.location_id = Location.id groupe par Location.id

3

Essayez:

Select L.Name, Count(*) PersonsCount 
    From Location L 
    Join Person P On P.Location_Id = L.Id 
    Group By L.Name 

ou si vous voulez voir Emplacements avec compte zéro,

Select L.Name, Count(*) PersonsCount 
    From Location L 
    Left Join Person P On P.Location_Id = L.Id 
    Group By L.Name