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

Requêtes MySQL Discussion :

[GROUP BY] arrachage de cheveux et migraine


Sujet :

Requêtes MySQL

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Août 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [GROUP BY] arrachage de cheveux et migraine
    Bonjour.

    J'ai lu attentivement l'excellentissime tuto Démythifier le GROUP BY Par Roland Bouman -
    Cédric Duprez (traducteur), et notamment les chapitres 3 et 4.

    Mon problème est exactement celui évoqué dans ces chapitres, mais moi, je voudrais un résultat, pas une erreur.
    Je m'explique, en reprenant l'exemple du tuto :

    une table messagerie.pet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     +----------+--------+---------+------+------------+------------+
    | name     | owner  | species | sex  | birth      | death      |
    +----------+--------+---------+------+------------+------------+
    | Fluffy   | Harold | cat     | f    | 1993-02-04 | NULL       |
    | Claws    | Gwen   | cat     | m    | 1994-03-17 | NULL       |
    | Buffy    | Harold | dog     | f    | 1989-05-13 | NULL       |
    | Fang     | Benny  | dog     | m    | 1990-08-27 | NULL       |
    | Bowser   | Diane  | dog     | m    | 1979-08-31 | 1995-07-29 |
    | Chirpy   | Gwen   | bird    | f    | 1998-09-11 | NULL       |
    | Whistler | Gwen   | bird    | NULL | 1997-12-09 | NULL       |
    | Slim     | Benny  | snake   | m    | 1996-04-29 | NULL       |
    | Puffball | Diane  | hamster | f    | 1999-03-30 | NULL       |
    +----------+--------+---------+------+------------+------------+
    Mais moi je cherche les animaux nés les premiers de chaque espèce !

    Or la requète suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT   species
    ,        MIN(birth)  -- date de naissance du plus vieil animal par espèce
    ,        MAX(birth)  -- date de naissance du plus jeune animal par espèce
    ,        birth       -- date de naissance de ... oh oh...!
    FROM     menagerie.pet
    renvoie ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    +---------+------------+------------+------------+
    | species | MIN(birth) | MAX(birth) | birth      |
    +---------+------------+------------+------------+
    | bird    | 1997-12-09 | 1998-09-11 | 1998-09-11 |
    | cat     | 1993-02-04 | 1994-03-17 | 1993-02-04 |
    | dog     | 1979-08-31 | 1990-08-27 | 1989-05-13 |
    | hamster | 1999-03-30 | 1999-03-30 | 1999-03-30 |
    | snake   | 1996-04-29 | 1996-04-29 | 1996-04-29 |
    +---------+------------+------------+------------+
    5 rows in set (0.00 sec)
    Et il est bien spécifié que c'est normal, et même que l'on ne devrait même pas afficher une colonne qui n'est pas dans le GROUP BY (d'ou les chapitre 5 et 6 : eviter le problème).

    Mais mon problème, c'est que justement, j'aimerais bien un résultat !

    A vot' bon coeur, M'sieurs Dames.
    Pitié pour les rares cheveux qui me restent !

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 008
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 008
    Points : 23 684
    Points
    23 684
    Par défaut
    Bonjour,

    Pour obtenir toutes les infos sur le premier né de chaque espèce, voici une requête qui devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT p1.name, p1.owner, p1.species, p1.sex, p1.birth, p1.death
    FROM pet p1
    INNER JOIN pet p2 ON p1.species = p2.species AND p2.birth <= p1.birth
    GROUP BY p1.name, p1.owner, p1.species, p1.sex, p1.birth, p1.death
    HAVING p1.birth = MIN(p2.birth);
    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Août 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup !

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 008
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 008
    Points : 23 684
    Points
    23 684
    Par défaut
    Au fait, dans la jointure, le "<" ne sert à rien (je pense) dans le cas présent.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

Discussions similaires

  1. [GridBagLayout] placement et arrachage de cheveux
    Par Mom's dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 11/06/2009, 18h26
  2. [OpenSceneGraph] Arrachage de cheveux
    Par DhFallen dans le forum OpenSceneGraph
    Réponses: 3
    Dernier message: 03/03/2009, 16h20
  3. Réponses: 4
    Dernier message: 11/02/2008, 10h12
  4. Réponses: 5
    Dernier message: 29/11/2006, 16h25
  5. [FTP] arrachage de cheveux
    Par sebairo dans le forum Langage
    Réponses: 2
    Dernier message: 24/07/2006, 15h47

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