IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

GROUP BY ne fonctionne pas


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2014
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2014
    Messages : 123
    Par défaut GROUP BY ne fonctionne pas
    Bonjour à tous,

    J'ai fait une requête comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    SELECT evenement.id_event,
    evenement.id_tournee, 
    evenement.ville_event as ville, 
    evenement.lien_resa_event as lienresa, 
    evenement.adresse_event as adresse,
    tournee.description_tournee as descriptiontournee, 
    tournee.id_tournee,
    tournee.nom_tournee as nomtournee, 
    seance.id_event, 
    seance.dateheure_seance as seances 
    FROM tournee, evenement, seance 
    WHERE tournee.id_tournee = evenement.id_tournee 
    AND evenement.id_event = seance.id_event
    ORDER BY dateheure_seance
    J'ai donc mes résultats comme désirés, sauf que je souhaiterai les trier aussi par ville pour pas qu'il y ai de doublon (ou id_event ça reviendrait au même).
    J'ai donc essayé de rajouter a la fin un GROUP BY ville_event mais cela se solde par un echec avec comme message d'erreur le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de 'GROUP BY ville_event' à la ligne 13' in C:\wamp\www\Medrano2017\index.php on line 58
    La ligne 58 correspondant à mon GROUP BY.

    Je ne comprends absolument pas pourquoi...

    Merci à tous d'avance !

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    Il est tout à fait normal qu"un bon SGBD refuse ta requête.
    Peut-être n'as-tu pas bien compris l'usage de la clause GROUP BY...
    Un petit rappel dans ce tutoriel.

    Au passage, cela fait maintenant un quart de siècle que la norme SQL conseille l'utilisation de l'opérateur JOIN pour effectuer des jointures.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2014
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2014
    Messages : 123
    Par défaut
    Bonjour,

    Une fois que tout marche j'optimise, je le fait toujours à la fin.

  4. #4
    Membre émérite Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Par défaut
    L'écriture correcte des requêtes, ce n'est pas de l'optimisation...

    Le moteur devrait gérer votre requête de la même manière, qu'elle soit écrite avec des jointures dans le WHERE ou correctement.

    Le problème, c'est si quelqu'un doit vous relire (et ce quelqu'un ça peut être vous)! Ce serait dommage de se faire maudire jusqu'à la 10ème génération, non ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2014
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2014
    Messages : 123
    Par défaut
    J'ai fait autrement !

    La voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT id_event,
                          id_tournee,
                          evenement.ville_event       AS ville,
                          evenement.lien_resa_event   AS lienresa,
                          evenement.adresse_event     AS adresse,
                          tournee.description_tournee AS descriptiontournee,
                          tournee.nom_tournee         AS nomtournee,
                          (SELECT MIN(s.dateheure_seance) FROM seance s WHERE s.id_event = evenement.id_event) AS premiereSeance,
                          (SELECT MAX(s.dateheure_seance) FROM seance s WHERE s.id_event = evenement.id_event) AS derniereSeance
                        FROM tournee
                        JOIN evenement USING(id_tournee)
                        ORDER BY premiereSeance,derniereSeance

  6. #6
    Membre émérite Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Par défaut
    Bonjour,

    La "solution"' que vous proposez n'a aucune signification mathématique... Comment pouvez-vous utiliser des fonctions d’agrégation sans GROUP BY ?
    Je vous suggère sincèrement de reprendre à 0 vos connaissances SQL (et d'aller faire un tour du côté de l'algèbre relationnelle qui est, selon moi, est indispensable pour comprendre réellement le SQL).

    Le SQL, ce n'est pas du bidouillage de mots-clés jusqu'à obtenir le résultat qu'on cherche sur une table exemple...
    C'est un langage de requêtage qui demande autant de rigueur qu'un langage de programmation. Vous devez réellement comprendre ce que vous faites pour être sûr des résultats que vous obtiendrez.

    Bien sûr, ce n'est qu'une suggestion et elle est fournie réellement dans le but de vous aider. N'en prenez pas ombrage s'il vous plaît, ce n'est pas le but de mon propos.

    Cordialement,

    Arkhena

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. AVG par GROUP BY ne fonctionne pas
    Par axelar dans le forum Requêtes
    Réponses: 9
    Dernier message: 04/02/2014, 13h47
  2. [AC-2010] Clause GROUP BY ne fonctionne pas
    Par madjon6 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 18/01/2012, 19h05
  3. [Nexus] - Groupes public ne fonctionnent pas
    Par ego dans le forum Intégration Continue
    Réponses: 1
    Dernier message: 17/09/2011, 09h35
  4. Réponses: 8
    Dernier message: 17/09/2009, 15h08
  5. Group by ne fonctionne pas
    Par webfranc dans le forum SQL
    Réponses: 10
    Dernier message: 07/05/2008, 14h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo