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

  1. #1
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    février 2005
    Messages
    2 020
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2005
    Messages : 2 020
    Points : 2 273
    Points
    2 273

    Par défaut SELECT avec contraintes sur plusieurs lignes du set de résultats

    Bonjour,
    dans le cadre d'une représentation de graphe du type id => parent_id, je bloque sur une requête. Je cherche à récupérer tous les parent_id d'un noeud en fonction d'une liste.
    Par exemple dans cet exemple minimal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    id 	| parent_id
    820	|	230
    820	|	636
    900	|	123
    900	|	636
    900	|	849
    1095	|	1093
    1095	|	861
    1095	|	849
    1095	|	636
    je cherche à récupérer tous les parents des noeuds qui ont pour parent 636 ET 849 ce qui devrait sortir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    id 	| parent_id
    900	|	123
    900	|	636
    900	|	849
    1095	|	1093
    1095	|	861
    1095	|	849
    1095	|	636
    je génère le premiers set de résultats avec une auto-jointure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT autoJoin.* FROM table LEFT OUTER JOIN table autoJoin ON table.id = autoJoin.id WHERE table.parent_id IN(636, 849)
    mais bloque complètement pour la suite, à savoir contraindre sur plusieurs lignes. J'ai cherché du côté de HAVING mais sans succès. Est-ce que c'est possible en une seule requête ?
    Je pensais à un truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT parent_id FROM table
    WHERE table.id
    IN(SELECT autoJoin.parent_id FROM table LEFT OUTER JOIN table autoJoin ON table.id = autoJoin.id WHERE table.parent_id IN(636, 849))
    HAVING...
    mais bloque donc sur la contrainte multi-rows.
    En vous remerciant par avance pour l'aide.
    Vive les roues en pierre

  2. #2
    Expert éminent sénior

    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    4 769
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : mars 2010
    Messages : 4 769
    Points : 12 471
    Points
    12 471
    Billets dans le blog
    1

    Par défaut

    Bonsoir,

    Une solution possible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    select t1.id
         , t1.parent_id
    from ma_table t1
    where exists
         (select 1
          from ma_table t2
          where t2.id=t1.id
            and t2.parent_id=636)
      and exists
         (select 1
          from ma_table t2
          where t2.id=t1.id
            and t2.parent_id=849)

  3. #3
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    février 2005
    Messages
    2 020
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2005
    Messages : 2 020
    Points : 2 273
    Points
    2 273

    Par défaut

    Merci beaucoup, la solution fonctionne
    Vive les roues en pierre

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

Discussions similaires

  1. Menu avec select sur plusieurs lignes
    Par jfox dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 23/07/2012, 15h11
  2. Recherche avec critères sur plusieurs lignes
    Par affro-jojo dans le forum Requêtes
    Réponses: 10
    Dernier message: 28/06/2011, 18h36
  3. select avec calcul sur plusieurs colones ?
    Par mohe27 dans le forum SQL
    Réponses: 7
    Dernier message: 08/03/2011, 11h42
  4. Requête SELECT contraintes sur plusieurs lignes
    Par beninsky dans le forum Requêtes
    Réponses: 3
    Dernier message: 06/02/2010, 13h05
  5. Bouton radio sur plusieur ligne avec Border layout
    Par Bason_sensei dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 03/05/2006, 16h03

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