Prob group by sql
Breizher
-
lina012 Messages postés 51 Statut Membre -
lina012 Messages postés 51 Statut Membre -
Bonjour a tous.
Voila mon probleme, ma requete ne fonctionne pas corretement, quand j'utilise un group by dans la requete:
#Avec Group By :
SELECT * FROM t_appartenir a, t_contact c, t_ville v, t_typecontact t WHERE a.codecontact=c.codecontact AND c.ville=v.codeville AND c.typecontact=t.codetypecontact AND codegroupe='25' GROUP BY c.ville
elle me fournit le resultat suivant:
AUDIERNE 29770 SAINTE ANNE ---------
BREST 29287 SAINT JEAN BAPTISTE ---------------
#Sans le Group By :
SELECT * FROM t_appartenir a, t_contact c, t_ville v, t_typecontact t WHERE a.codecontact=c.codecontact AND c.ville=v.codeville AND c.typecontact=t.codetypecontact AND codegroupe='25'
elle me fournit le resultat suivant:
BREST 29287 SAINT JEAN BAPTISTE
BREST 29287 SAINT ANDRE
AUDIERNE 29770 SAINTE ANNE
Je ne comprend plus rien le group by fait une sorte de distinct.
Voila mon probleme, ma requete ne fonctionne pas corretement, quand j'utilise un group by dans la requete:
#Avec Group By :
SELECT * FROM t_appartenir a, t_contact c, t_ville v, t_typecontact t WHERE a.codecontact=c.codecontact AND c.ville=v.codeville AND c.typecontact=t.codetypecontact AND codegroupe='25' GROUP BY c.ville
elle me fournit le resultat suivant:
AUDIERNE 29770 SAINTE ANNE ---------
BREST 29287 SAINT JEAN BAPTISTE ---------------
#Sans le Group By :
SELECT * FROM t_appartenir a, t_contact c, t_ville v, t_typecontact t WHERE a.codecontact=c.codecontact AND c.ville=v.codeville AND c.typecontact=t.codetypecontact AND codegroupe='25'
elle me fournit le resultat suivant:
BREST 29287 SAINT JEAN BAPTISTE
BREST 29287 SAINT ANDRE
AUDIERNE 29770 SAINTE ANNE
Je ne comprend plus rien le group by fait une sorte de distinct.
5 réponses
Déjà, SELECT *, oublie.
On ne doit jamais faire de SELECT *
Ensuite, group by implique qu'il y a quelquechose à calculer (SUM, AVG, COUNT...).
Or dans ton SELECT, il n'y a aucune fonction de calcul.
On ne doit jamais faire de SELECT *
Ensuite, group by implique qu'il y a quelquechose à calculer (SUM, AVG, COUNT...).
Or dans ton SELECT, il n'y a aucune fonction de calcul.
SELECT (tes champs) FROM t_appartenir a, t_contact c, t_ville v, t_typecontact t WHERE a.codecontact=c.codecontact AND c.ville=v.codeville AND c.typecontact=t.codetypecontact AND codegroupe='25' GROUP BY c.ville, v.codeville
ca t'affichera normalement tes résultats groupés par ville et le fait de rajouter le code ville obligera à tt afficher y compris les doublons.
et puis il a raison il ne faut jamais grouper sur le *
je ne sais pas si c'est la meilleure solution à adopter , mais bon voilà voilà !!!
ca t'affichera normalement tes résultats groupés par ville et le fait de rajouter le code ville obligera à tt afficher y compris les doublons.
et puis il a raison il ne faut jamais grouper sur le *
je ne sais pas si c'est la meilleure solution à adopter , mais bon voilà voilà !!!
Merci pour vos reponces mais toujour rien a faire
requete modifier:
SELECT a.codecontact, nom, adresse, v.ville, cp, tel, teldirecteur, mail FROM t_appartenir a, t_contact c, t_ville v WHERE a.codecontact=c.codecontact AND c.ville=v.codeville AND codegroupe='25' GROUP BY c.ville, v.codeville;
#et toujour le mais resultat:
AUDIERNE 29770 SAINTE ANNE ---------
BREST 29287 SAINT JEAN BAPTISTE ---------------
C 'est la deuxième requete ki ma poser probleme dans mon projet !!!
requete modifier:
SELECT a.codecontact, nom, adresse, v.ville, cp, tel, teldirecteur, mail FROM t_appartenir a, t_contact c, t_ville v WHERE a.codecontact=c.codecontact AND c.ville=v.codeville AND codegroupe='25' GROUP BY c.ville, v.codeville;
#et toujour le mais resultat:
AUDIERNE 29770 SAINTE ANNE ---------
BREST 29287 SAINT JEAN BAPTISTE ---------------
C 'est la deuxième requete ki ma poser probleme dans mon projet !!!
Le GROUP BY ne sert à rien si tu n'utilise pas de fonction de calcul (COUNT, SUM, AVG...)
Voir https://sqlpro.developpez.com/cours/sqlaz/ensembles/#L1
Voir https://sqlpro.developpez.com/cours/sqlaz/ensembles/#L1
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
c bizarre , mais chez moi, ça marche nikel, et pourtant j'ai pas mal de doublons !!!
essaie encore ça!!!
SELECT nom, adresse, v.ville,a.codecontact, cp, tel, teldirecteur, mail, a.codeville FROM t_appartenir a, t_contact c, t_ville v WHERE a.codecontact=c.codecontact AND c.ville=v.codeville AND codegroupe='25' GROUP BY v.ville, nom, adresse, a.codeville,cp, tel, teldirecteur, mail, a.codecontact
(regarde si tt ce que tu as dans le group by fait partie du select)
de tte facon ça groupe par ville
essaie encore ça!!!
SELECT nom, adresse, v.ville,a.codecontact, cp, tel, teldirecteur, mail, a.codeville FROM t_appartenir a, t_contact c, t_ville v WHERE a.codecontact=c.codecontact AND c.ville=v.codeville AND codegroupe='25' GROUP BY v.ville, nom, adresse, a.codeville,cp, tel, teldirecteur, mail, a.codecontact
(regarde si tt ce que tu as dans le group by fait partie du select)
de tte facon ça groupe par ville