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 du Club
    Récupérer les données si ma valeur est dans une des deux colonnes
    Bonjour,

    J'essaie de créer une requête pour récupérer les données de ma table A ainsi que les données de ma table B
    si l'ID_A de ma table A est présent dans la table B dans le champ "ID_MERE" ou "ID_FILLE".
    J'ai codé cette requête qui me renvoi les bonnes lignes mais je n'arrive qu'à récupérer les données de ma table B que sur la ligne où l'ID est la mère (certainement dû au WHERE mais je n'arrive pas à faire autrement).

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT A.ID_A, B.ID_MERE, B.ID_FILLE
    FROM A, B 
    WHERE A.ID_A = B.ID_FILLE(+)


    Merci d'avance pour votre aide.

  2. #2
    Membre du Club
    Ca fait deux jours que je cherche et c'est lorsque je poste un message que je trouve la solution...

    Pour ceux que ça intéresse :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT A.ID_A
    FROM A
    FULL OUTER JOIN B ON (A.ID_A=B.ID_MERE OR A.ID_A=B.ID_FILLE)

  3. #3
    Modérateur

    Essayez plutôt comme ceci, vous aurez probablement de meilleures performances :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select A.ID_A, B.ID_MERE, B.ID_FILLE
      from A
      join B on B.ID_FILLE = A.ID_A
     union -- all -- vous pouvez mettre ALL si vous n'avez pas de lignes type ID_MERE = ID_FILLE
    select A.ID_A, B.ID_MERE, B.ID_FILLE
      from A
      join B on B.ID_MERE = A.ID_A;

###raw>template_hook.ano_emploi###