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 :

Pb avec prédicat IN


Sujet :

Langage SQL

  1. #1
    ALkyD
    Invité(e)
    Par défaut Pb avec prédicat IN
    Bonjour,
    voici mon pb :

    j'ai par exemple une table voiture (je met juste un exemple, car ma base est trop complexe pour être exposée ici) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    id_voiture | nom_voiture
    -----------------------------
    1          | Voiture A
    2          | Voiture B
    3          | Voiture C
    4          | Voiture D
    5          | Voiture E
    6          | Voiture F
    Si je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM voiture
    WHERE id_voiture IN (1, 3, 5)
    ça me renverra bien 3 lignes : la voiture A, la voiture C et la voiture E.
    Ce que je veux faire, c'est que les résultats puissent me renvoyer aussi les doublons, comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM voiture
    WHERE id_voiture IN (1, 3, 5, 1, 1)
    où le prédicat IN me renvoit que 3 résultats (1, 3 et 5) alors que je souhaite avoir les 5 résultats.
    J'ai essayé avec le SELECT ALL, le WHERE id_voiture = 1 OR id_voiture = 3 OR, le WHERE id_voiture = (1, 3, 5, 1, 1)... en vain. Je tourne sous MySQL (avec PHP), donc les sous-requêtes ne marchent pas.
    Je suis sûr que le problème est tout con, pourtant je galère pas mal pour trouver...

    Une idée ?
    Merci

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Je ne comprends pas bien ce que tu veux faire, mais si tu veux obtenir 3 fois la même ligne il faut créer ces lignes soit avec une jointure sur une autre table ou une UNION

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT * from voiture where id_voiture = 1
    UNION ALL
    SELECT * from voiture where id_voiture = 3
    UNION ALL
    SELECT * from voiture where id_voiture = 5
    UNION ALL
    SELECT * from voiture where id_voiture = 1
    UNION ALL
    SELECT * from voiture where id_voiture = 1
    , mais je ne vois toujours pas ce que tu veux faire ???

  3. #3
    ALkyD
    Invité(e)
    Par défaut
    La partie (1, 3, 5, 1, 1) est gérée dynamiquement en PHP.

    Je récupère toutes les voitures d'un lieu donné, et il peut y avoir plusieurs mêmes voitures par lieu. A Limoges par exemple, la voiture A y est présente 3 fois, la voiture C et E 1 fois, donc la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT id_voiture
    FROM lieu
    WHERE libelle_lieu = 'Limoges'
    me renvoie donc 1, 1, 1, 3, 5 comme résultat. Et avec ce résultat, je construit la requête de mon 1er post, puis veut afficher une ligne par voiture, même si y'a des doublons. Je reconnais que c'est un peu farfelu mais j'ai besoin de faire ce type de truc.

    Pour les SELECT ... UNION ALL, y'a que cette possibilité ??

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Pour les SELECT ... UNION ALL, y'a que cette possibilité ??
    Non il y a l'autre que je suggérais dans mon post : la jointure !

    Dans ton cas, il faut faire une jointure entre Voiture et Lieu, et tu auras autant de lignes que dans Lieu, et non autant de lignes que dans Voiture !

  5. #5
    ALkyD
    Invité(e)
    Par défaut
    J'ai résolu le pb en modifiant un peu ta soluce. Thanx

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/11/2011, 08h20
  2. recherche dans une séquence avec plusieurs prédicats
    Par Alain Defrance dans le forum JavaFX
    Réponses: 5
    Dernier message: 27/09/2009, 09h54
  3. Prédicat ALL avec jointure
    Par boutss dans le forum SQL
    Réponses: 3
    Dernier message: 18/06/2007, 14h48
  4. Jointure externe avec prédicat dans la clause de jointure
    Par aflp91 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 08/12/2006, 00h23
  5. count() avec prédicat : est-ce possible ?
    Par TOM-Z dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 06/03/2006, 14h14

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