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 :

[MySQL 4.1.12] liste des livreurs qui ont eu plus de 2 sociétés différentes


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    décembre 2004
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : décembre 2004
    Messages : 65
    Points : 55
    Points
    55
    Par défaut [MySQL 4.1.12] liste des livreurs qui ont eu plus de 2 sociétés différentes
    Bonjour,

    je n'arrive pas à fignoler ma requête. voici la structure de ma table :

    -------------------------------------------
    LIVREUR | SOCIETE | DATE |
    -------------------------------------------
    toto | societe1 | 03/06/04 |
    toto | societe1 | 05/07/04 |
    toto | societe2 | 08/12/05 |
    toto5 | societe12 | 01/01/01 |
    --------------------------------------------

    requête : Je veux sortir les livreurs, la societe, la date, pour les livreurs qui ont eu plus de deux sociétés différentes.

    Vous avez 15 minutes, le premier qui regarde la copie du voisin c'est 0. le zéro de la défaite. calculatrice interdite.
    Non sans dec, j'arrive pas à faire cette satanée requête, y a longtps que j'ai pas manipulé le SQL et heu voilà, je suis nul en fait
    Ce que j'ai fait pour l'instant c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT livreur, societe, date 
      from MATABLE 
     GROUP BY societe, livreur 
     order by livreur
    Ca me donne un truc du genre :
    toto societe1 03/06/04
    toto societe2 08/12/05
    toto5 societe12 01/01/01

    Vous remarquer que pour la societe1 il me sort la date la plus vieille, or moi je voudrais la plus récente. Ca c'est mon second problème

    Un tit coup de main serait le bienvenu merci d'avance !

  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 : 48

    Informations forums :
    Inscription : janvier 2005
    Messages : 2 701
    Points : 4 237
    Points
    4 237
    Par défaut
    Pour avoir les livreurs ayant appartenu à plus de 2 sociétés, une requête possible serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT livreur, COUNT(DISTINCT societe)
      FROM MaTable
     GROUP BY livreur
    HAVING COUNT(DISTINCT societe) > 2;
    Mais comme tu n'as pas respecté les CONSEILS... à lire AVANT de POSTER, je ne connais pas ton SGBD et je ne sais donc pas si il supporte le COUNT(DISTINCT ... ) ?

    Pour ramener une date dans cette requête, encore faudrait-il savoir quelle date tu souhaite obtenir. Si c'est la dernière, un simple MAX devrait suffire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT livreur, COUNT(DISTINCT societe), MAX(MaDate)
      FROM MaTable
     GROUP BY livreur
    HAVING COUNT(DISTINCT societe) > 2;
    "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 du Club
    Inscrit en
    décembre 2004
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : décembre 2004
    Messages : 65
    Points : 55
    Points
    55
    Par défaut
    ha oui j'ai pas lu ce post. J'utilise donc MySQL - 4.1.12 qui n'a pas l'air d'accepter le count(distinct(societe)).
    pour le max(date) c'est parfaitement ce dont j'avais besoin, 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 : 48

    Informations forums :
    Inscription : janvier 2005
    Messages : 2 701
    Points : 4 237
    Points
    4 237
    Par défaut
    Donc si COUNT(DISTINCT ...) ne fonctionne pas, il faut que tu passe par une sous-requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT livreur, societe
      FROM MaTable
     GROUP BY livreur;
    Cette requête devra être intégré dans la requête que je t'ai proposé, en tant que pseudo-table, et en faisant un count sur le champ societe de cette requête, tu devrais pouvoir remplacer le COUNT(DISTINCT ...)
    "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

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/08/2012, 17h01
  2. Réponses: 8
    Dernier message: 14/05/2009, 23h54
  3. Réponses: 4
    Dernier message: 08/06/2006, 14h18
  4. la liste des clients qui n'ont pas acheter aucun article ...
    Par TéBeSsI dans le forum Langage SQL
    Réponses: 6
    Dernier message: 13/02/2004, 15h57

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