count =>vide + selection sur 2 tables

count =>vide + selection sur 2 tables - SQL/NoSQL - Programmation

Marsh Posté le 02-03-2009 à 13:43:53    

Salut,
j'ai une table gallerie et une table photos, chaque photos est reliée a une gallerie grace a un champ id_gallerie.
Maintenant j'aimerai retourner en une requete si possible les noms des galleries + le nombre de photos contenus dans celle ci,
pour l'instant je n'arrive a retourner que les galleries contenant au moins une photo mais mon but est aussi de retourner les galleries vides..
 

Code :
  1. SELECT g.name, COUNT(DISTINCT p.id) FROM photos as p, galleries as g where id_user=2 and p.id_gallery=g.id group by name;


 

Citation :


+-----------------------+----------------------+
| name                  | COUNT(DISTINCT p.id) |
+-----------------------+----------------------+
| gallerie3nonvide    |                    3 |
+-----------------------+----------------------+


 
Est ce possible ou avec des left /join (je me suis pas rensiegné dessus encore  :o  )
merci


Message édité par krifur le 02-03-2009 à 13:54:17
Reply

Marsh Posté le 02-03-2009 à 13:43:53   

Reply

Marsh Posté le 02-03-2009 à 15:20:11    

Reply

Marsh Posté le 02-03-2009 à 20:25:30    

Ca peux marcher avec COUNT dans le select ?

Reply

Marsh Posté le 04-03-2009 à 09:33:44    

utilise plutôt cette syntaxe
 
SELECT g.name, COUNT(DISTINCT p.id)  
FROM photos as p inner join galleries as g  
on p.id_gallery=g.id  
where id_user=2  
group by name;
 
et remplace le inner par left / right pour voir ce que ça donne  
et te faire une idée ...
 
Note : Attention aux conditions (where clause) portant sur des jointures externes ...
 


---------------
il n'y a pas que le VTT dans la vie, il y a le Snowboard aussi ...
Reply

Marsh Posté le 21-03-2009 à 11:00:25    


 
SELECT g.name, COUNT(p.id)  
FROM galleries as g left outer join photos as p  
        on p.id_gallery=g.id  
where id_user=2  
group by name;
 
=> ramene toutes les lignes de "galleries"  
 

Reply

Marsh Posté le 22-05-2009 à 19:03:37    

merci a tous

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed