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 :

problème avec Group By/Having


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut problème avec Group By/Having
    Bonjour,
    j'ai un petit soucis pour réaliser une requête.

    J'ai 2 tables :
    - Voiture , contenant idVoiture
    - 'Voiture_has_Utilisateur' : idVoiture, idUtilisateur, Status

    Du coup, une voiture peut avoir plusieurs utilisateurs donc dans la table 'Voiture_has_Utilisateur' un idVoiture peut être contenu dans plusieurs lignes.

    Status peut valoir 0 ou 4.

    Bref, j'aimerais sélectionner tous les voitures ainsi que le status donc un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT v.idVoiture, vhu.status 
    FROM `Voiture` AS v
    JOIN `Voiture_has_Utilisateur` AS vhu on vhu.idVoiture=v.idVoiture
    GROUP BY(v.idVoiture)
    Le problème c'est que j'aimerai bien prendre le status, de manière un peu spéciale :
    En fait, si dans toutes les lignes retournées pour un idVoiture, il y a un status qui vaut 0 , j'aimerai bien que ce soit lui qui soit retourné.
    Par contre s'il aucun status ne vaut 0, 4 soit retourné.

    Et je ne sais pas comment réalisé cela, j'ai pensé à la clause Having mais je pense de plus en plus que cela n'a rien avoir.

    Quelqu'un a une idée?

    Merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    que dis-tu de ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT v.idVoiture, 
      CASE WHEN MIN(vhu.STATUS) = 0 THEN 0 ELSE  MAX(vhu.STATUS) END AS STATUS
    FROM `Voiture` AS v
    JOIN `Voiture_has_Utilisateur` AS vhu ON vhu.idVoiture=v.idVoiture
    GROUP BY(v.idVoiture)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Oh, je connaissais pas la clause CASE.

    En tout cas, ca marche parfaitement,

    merci beaucoup.

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

Discussions similaires

  1. problème avec GROUP BY
    Par benjisan dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 14/06/2007, 11h48
  2. [XI] problème avec groupe sur un champ trié par origine ?
    Par kikidrome dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 11/04/2007, 15h31
  3. Problème avec GROUP BY
    Par Korskarn dans le forum Langage SQL
    Réponses: 6
    Dernier message: 07/03/2006, 14h35
  4. Problème avec group by...
    Par gdido dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 30/07/2005, 09h34
  5. [débutant] problème avec Group by
    Par Amenofis dans le forum Débuter
    Réponses: 5
    Dernier message: 25/05/2005, 09h57

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