51 votes

joindre sur plusieurs colonnes

J'ai deux tables (table A et table B) que je souhaite joindre sur plusieurs colonnes dans les deux tables.

 Table A                         
Col1     Col2                
================            
A11      A21                 
A22      A22              
A33      A23                 

Table B 
Col1     Col2   Val 
=================  
B11     B21     1  
B12     B22     2  
B13     B23     3  

Je veux que les deux colonnes de la table A se joignent à l'une des colonnes Col1 et Col2 de la table B pour obtenir Val.

65voto

Blam Points 17325

D'accord aucune correspondance dans votre exemple. Si vous voulez dire les deux colonnes sur l'une ou l'autre, vous avez besoin d'une requête comme celle-ci ou de réexaminer la conception des données.

     Select TableA.Col1, TableA.Col2, TableB.Val
    FROM TableA
    INNER JOIN TableB
          ON TableA.Col1 = TableB.Col1 OR TableA.Col2 = TableB.Col2 
          OR TableA.Col2 = TableB.Col1 OR TableA.Col1 = TableB.Col2

28voto

DRapp Points 23901

Les autres requêtes sont toutes basées sur l'UNE des conditions de qualification et elles renverront un enregistrement... si vous voulez vous assurer que les DEUX colonnes du tableau A correspondent, vous devrez faire quelque chose comme...

 select 
      tA.Col1,
      tA.Col2,
      tB.Val
   from
      TableA tA
         join TableB tB
            on  ( tA.Col1 = tB.Col1 OR tA.Col1 = tB.Col2 )
            AND ( tA.Col2 = tB.Col1 OR tA.Col2 = tB.Col2 )

3voto

CharithJ Points 15364

Vous trouverez ci-dessous la structure de SQL que vous pouvez écrire. Vous pouvez effectuer plusieurs jointures en utilisant "ET" ou "OU".

 Select TableA.Col1, TableA.Col2, TableB.Val
FROM TableA, 
INNER JOIN TableB
 ON TableA.Col1 = TableB.Col1 OR TableA.Col2 = TableB.Col2

0voto

gview Points 5419
tableB.col1 = tableA.col1 
OR tableB.col2 = tableA.col1  
OR tableB.col1 = tableA.col2  
OR tableB.col1 = tableA.col2

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X