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 de requête (algorithme ?)


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Problème de requête (algorithme ?)
    Bonjour à tous,

    J'ai un petit soucis, je n'arrive pas à créer la requête pour récupérer les infos dont j'ai besoin.
    J'ai une table sous cette forme:
    +-------------------+
    | ID| Name | Color |
    +-------------------+
    | 1 | toto | RED |
    | 1 | toto | blue |
    | 1 | toto | yellow |
    | 1 | toto | green |
    | 2 | blabla | RED |
    | 2 | blabla | green |
    | 2 | blabla | |
    | 2 | blabla | purple |
    | 3 | riri | |
    | 3 | riri | blue |
    | 4 | jeje | RED |
    | 4 | jeje | green |
    | 4 | jeje | |
    +-------------------+
    (Il n'y a pas de clé primaire)
    Je doit récupérer la liste des noms (Name) qui n'ont pas de couleur rouge (RED).
    Par exemple avec la table ci-dessus, j'aimerais récupérer "riri" (1 seule fois).

    J'ai cherché du côté de "GROUP BY (name)", mais ça n'a rien donné, d'autant qu'il prends la première ligne et le "RED" n'est pas forcément toujours sur la première ligne.

    En espérant m'être fait comprendre,
    Merci.

  2. #2
    Membre confirmé Avatar de juvamine
    Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2004
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2004
    Messages : 414
    Points : 502
    Points
    502
    Par défaut
    Plusieurs solutions...

    La plus évidentes serait de passer par une sous requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Select distinct name 
    from MaTable
    Where Name not IN (Select name 
                                from MaTable 
                                where Color = "RED")
    Cette requete consiste a dire: je veux tous les noms de matable qui ne sont pas dans "tous les noms ayant du RED"

    Cordialement
    juva

  3. #3
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci juvamine, cette solution est effectivement simple, j'aurais du y penser.

    MySQL me pète quand même une erreur de syntaxe, je ne comprends pas pourquoi. J'ai l'impression que l'erreur provient des parenthèses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (
    SELECT `Name` 
    FROM MaTable
    WHERE `Color` = "RED"
    )
    Cette requète me pète une erreur de syntaxe sur la ligne 1... (et pas lorsque j'enlève les parenthèses). Du coup la solution proposée ne fonctionne pas non plus.
    Une idée ?

    Cordialement,
    [Je travaille avec phpMyAdmin 2.5.4, et MySQL 3.23.58]


    [edit]
    Après recherche il semblerait que cette version ne supporte pas les requètes imbriquées... Aurais-tu une autre solution sous la main ?

    Merci.

  4. #4
    Membre confirmé Avatar de juvamine
    Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2004
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2004
    Messages : 414
    Points : 502
    Points
    502
    Par défaut
    je sais pas si ça accepte les jointures normalisées:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select distinct T1.Name
    FROM MaTable T1
    LEFT JOIN MaTable T2 ON (T1.Name = T2.Name And T2.Color = 'RED')
    WHERE T2.Name IS NULL
    Je suis pas sur que ça aille :red:

    A+
    juva

Discussions similaires

  1. Réponses: 19
    Dernier message: 27/08/2003, 15h32
  2. problème de requête avec jointures
    Par tinhat dans le forum Requêtes
    Réponses: 7
    Dernier message: 11/08/2003, 10h33
  3. Problème de requètes concurentes
    Par Emmanuel.G dans le forum XMLRAD
    Réponses: 3
    Dernier message: 08/08/2003, 16h51
  4. Réponses: 2
    Dernier message: 16/07/2003, 14h40
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

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