Pregunta

Tengo una operación sindical entre dos mesas

SELECT ID_1,
       name_1,
       surname_1,
  FROM T_ONE
 UNION
SELECT ID_2,
       name_2,
       surname_2
  FROM TABLE_2

Quiero unir el resultado de esta operación UNION con otra tabla o incluso con todas las TABLE_1 .

¿Cómo puedo manejar el resultado de esta nueva tabla de UNION .

por ejemplo después del UNION anterior:

RIGHT JOIN TABLE_3
        ON TABLE_3.ID_3 = XXXXXXXXXXXXXXXXXXXX.ID_2

Realmente no sé lo que necesito poner en lugar de XXXXXXXXXXXXXXXX para crear la nueva tabla generada por UNION .

¿Fue útil?

Solución

Utilice una tabla derivada como " foo " aquí, y luego ÚNETE nuevamente como quieras:

SELECT
    *
FROM
    TABLE_3
    LEFT JOIN
    (
    SELECT ID_1, name_1, surname_1, FROM T_ONE
    UNION --ALL would be more efficient if results do not overlap, as van's comment said
    SELECT ID_2, name_2, surname_2 FROM TABLE_2
    ) foo  ON TABLE_3.ID_3 = foo.ID_1

PS. Use combinaciones IZQUIERDA: menos confusas que las combinaciones DERECHA.

Otros consejos

Debe proporcionar una unión en ambos SELECT:

SELECT ID_1, name_1, surname_1, FROM T_ONE
RIGHT JOIN TABLE_3 ON TABLE_3.ID_3 = T_ONE.ID_1

UNION

SELECT ID_2, name_2, surname_2 FROM TABLE_2
RIGHT JOIN TABLE_3 ON TABLE_3.ID_3 = TABLE_2.ID_2

O algo así. No olvides que UNION elimina los duplicados, así que si quieres que se incluyan duplicados, usa UNION ALL

SELECT ID_1, name_1, surname_1, FROM T_ONE

from
(SELECT ID_1, name_1, surname_1, FROM T_ONE
UNION 
SELECT ID_2, name_2, surname_2 FROM TABLE_2 ) foo

left join TABLE_3 

ON TABLE_3.ID_3 =foo.ID_2

Para ampliar la respuesta de gbn anterior para aquellos que han preguntado. Aquí se explica cómo hacerlo con la unión como la primera parte de la unión izquierda.

SELECT table3.phone, foo.fname, foo.lname, foo.email
FROM
(SELECT table1.fname,table1.lname,table1.email
    FROM table1
UNION
SELECT table2.fname,table2.lname,table2.email
    FROM table2
) foo
LEFT JOIN table3
ON foo.lname = table3.lname
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top