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 :

[Access] Requète SQL Group By, Order By and Co


Sujet :

Langage SQL

  1. #1
    Membre régulier Avatar de zoidy
    Inscrit en
    Avril 2006
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 184
    Points : 118
    Points
    118
    Par défaut [Access] Requète SQL Group By, Order By and Co
    Salut à tous ^^,

    Pour l'affichage de rubriques dans un menu, je dois faire une requète qui sélectionne les sous catégories d'une catégorie précise en les classant par date en ordre décroissant.
    Jusque là, rien de bien compliqué, mais la requète se corse au moment où 2 catégories identiques sont dans la base, et que je ne dois en afficher qu'une seule.

    En appliquant à la lettre cette description, j'ai fait cette première requète :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT DISTINCT souscategorie FROM Article WHERE categorie='Journal' ORDER BY dates DESC
    Mais cela créé évidemment une erreur...
    J'ai pensé faire un GROUP BY, mais ça ne règle pas le problème

    Donc si qqun a une solution, j'suis preneur

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Un Distinct te permet de ramener les valeurs distinctes de la liste des champs du SELECT : en l'occurence, seule le champ souscategorie t'intéresse.

    Une fois récupérée ta liste de sous-catégorie, il est hors de question de les trier via ton champ dates puisque cette notion n'existe pas dans ta liste !

    Tu peux essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT souscategorie, MAX(dates)
      FROM Article 
     WHERE categorie='Journal' 
     GROUP BY souscategorie
     ORDER BY dates DESC
    Mais c'est sans garanties car tu n'as pas respecté les Conseils à lire avant de poster

    Si ma réponse ne te convient pas, merci de préciser ton SGBD, ainsi que la structure de la table employée et les données que tu souhaites en extraire
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  3. #3
    Membre régulier Avatar de zoidy
    Inscrit en
    Avril 2006
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 184
    Points : 118
    Points
    118
    Par défaut
    Mais c'est sans garanties car tu n'as pas respecté les Conseils à lire avant de poster
    Oups, désolé (même si j'ai précisé dans le titre le sgbd utilisé ^^)

    Pour la table, les champs sous catégorie, catégorie et dates sont les seuls utiles pour la requète.


    en l'occurence, seule le champ souscategorie t'intéresse.
    En effet, je voudrais juste afficher ce champ par ordre décroissant de date, tout en évitant les doublons.


    Pour ta requète, ça m'affiche l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    odbc_exec(): 
    SQL error: [Microsoft][Pilote ODBC Microsoft Access] Vous avez essayé d'exécuter une requête 
    ne comprenant pas l'expression spécifiée 'dates' comme une partie de la fonction d'agrégat
    Merci ^^

  4. #4
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Pardon, une erreur s'est glissée dans ma requête ... mais elle n'est pas difficile à corriger : Mon "Order By" ne peut se baser sur "dates", puisque ce champ n'est pas dans le SELECT, mais sur "MAX(dates)" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT souscategorie, MAX(dates)
      FROM Article 
     WHERE categorie='Journal' 
     GROUP BY souscategorie
     ORDER BY MAX(dates) DESC
    Cette requête te ramera tes catégories avec la date la plus récente associé (via le MAX), et te trieras la liste des résuslats via cette date max.
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  5. #5
    Membre régulier Avatar de zoidy
    Inscrit en
    Avril 2006
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 184
    Points : 118
    Points
    118
    Par défaut
    Merci Xo, ça marche nikel

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

Discussions similaires

  1. [vba]-Access requête SQL
    Par jpo dans le forum VBA Access
    Réponses: 3
    Dernier message: 26/07/2007, 07h44
  2. [Access] requête SQL...
    Par breli dans le forum Langage SQL
    Réponses: 2
    Dernier message: 10/04/2007, 17h00
  3. Petit problème SQL (GROUP BY|ORDER BY)
    Par kalash_jako dans le forum Langage SQL
    Réponses: 4
    Dernier message: 09/04/2007, 23h17
  4. ACCESS - Requête SQL
    Par guiguikawa dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 01/06/2006, 14h49
  5. Access - Requête SQL - UPDATE
    Par tchoo83 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 19/12/2005, 15h48

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