2010-03-13 11 views
5

Supongamos que tengo una tabla con un campo que puede ser 1 ó 2 ...SQL se unen a diferentes tablas en función de información de la fila

¿Cómo se selecciona de tal manera que para cada fila de la tabla A, si el campo es 1, únase a la selección con la tabla B y si el campo es 2, únase a la selección con la tabla C?

+0

wow, por supuesto! ¡StackOverflow es LA mejor comunidad en línea de todos los tiempos! ¡Gracias chicos! – xster

Respuesta

8
(
SELECT MyField1, MyField2 FROM A 
INNER JOIN B ON A.Id = B.Id 
AND A.MyField = 1 
) 
UNION 
(
SELECT MyField1, MyField2 FROM A 
INNER JOIN C ON A.Id = C.Id 
AND A.MyField = 2 
) 
+0

Buena respuesta dialecto eléctrico – Enrique

0

somethine como este puede trabajar

DECLARE @TableA TABLE(
     ID INT 
) 

DECLARE @TableB TABLE(
     ID INT, 
     Val VARCHAR(50) 
) 

DECLARE @TableC TABLE(
     ID INT, 
     Val VARCHAR(50) 
) 

INSERT INTO @TableA SELECT 1 
INSERT INTO @TableA SELECT 2 

INSERT INTO @TableB SELECT 1, 'B' 

INSERT INTO @TableC SELECT 2, 'C' 

SELECT * 
FROM @TableA a INNER JOIN 
     @TableB b ON a.ID = b.ID 
        AND a.ID = 1 
UNION 
SELECT * 
FROM @TableA a INNER JOIN 
     @TableC c ON a.ID = c.ID 
        AND a.ID = 2 
Cuestiones relacionadas