Frage

Ich habe eine Vereinigung opertaion zwischen zwei Tabellen

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

Ich möchte das Ergebnis dieser UNION Operation mit einer anderen Tabelle verbinden oder sogar mit allen TABLE_1.

Wie kann ich diese neue Tabelle Ergebnis der UNION behandeln.

zum Beispiel nach dem vorherigen UNION:

RIGHT JOIN TABLE_3
        ON TABLE_3.ID_3 = XXXXXXXXXXXXXXXXXXXX.ID_2

Ich weiß wirklich nicht, was ich anstelle der XXXXXXXXXXXXXXXX setzen müssen, die neue Tabelle durch die UNION erzeugt Andle.

War es hilfreich?

Lösung

Verwenden Sie eine abgeleitete Tabelle wie „foo“ hier und dann wieder JOIN wie Sie wollen:

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. Mit LINKS verbindet. Weniger verwirrend dann schließt sich rechts

Andere Tipps

Sie müssen eine in beide verbinden bieten 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

oder so ähnlich. Vergessen Sie nicht, dass eine UNION die Duplikate eliminiert, so dass, wenn Sie Duplikate enthalten sein, uyse 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

Um auf gbn Antwort erweitern oben für diejenigen, die darum gebeten haben. Hier ist, wie es mit der Union zu tun, wie der erste Teil des linken verbinden.

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top