smallweba Posté 5 Janvier 2017 Posté 5 Janvier 2017 Bonjour, j’ai un problème en sql . je rappelle que j'utilise mysql j'ai deux tables, la table agriculteur et la table permis agiculteur(idag,nom, prenoms, ...) permis (idpermis,idag, taille,...) en utilisant count , j'obtiens le nombre de permis que possède un agriculteur . SELECT idag,COUNT(*) as Nbrepermis FROM PERMIS GROUP BY idag ORDER BY idag Mais je veux que ma requête mette aussi la valeur 0 pour les agriculteurs qui n'ont pas encore eu de permis. j'ai vu des exemple de jointure, mais sincèrement je n'arrive pas à écrire la requête. Merci de donner un coup de main. Cordialement
SStephane Posté 6 Janvier 2017 Posté 6 Janvier 2017 SELECT agiculteur.*, count(permis.idpermis) AS nbre FROM agiculteur LEFT JOIN permis ON agiculteur.idag = permis.idag GROUP BY permis.idag ORDER BY nbre DESC (j'ai pas essayer mais ça doit ressembler à ça)
Portekoi Posté 6 Janvier 2017 Posté 6 Janvier 2017 Sur une agrégation, il faut que tous les champs non "cumulés" soient dans un group by : SELECT agriculteur.nom, count(permis.idpermis) AS nbre FROM agriculteur LEFT JOIN permis ON agriculteur.idag = permis.idag GROUP BY agriculteur.nom ORDER BY nbre DESC
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant