Domanda

Ho un'operazione di unione tra due tabelle

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

Voglio unire il risultato di questa operazione UNION con un'altra tabella o anche con tutti i TABLE_1 .

Come posso gestire il risultato di questa nuova tabella di UNION .

ad esempio dopo il precedente UNION :

RIGHT JOIN TABLE_3
        ON TABLE_3.ID_3 = XXXXXXXXXXXXXXXXXXXX.ID_2

Non so davvero cosa devo mettere invece di XXXXXXXXXXXXXXXX per modificare la nuova tabella generata da UNION .

È stato utile?

Soluzione

Utilizza una tabella derivata come " foo " qui e poi UNISCITI di nuovo come desideri:

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. Utilizza i join SINISTRO: meno confuso dei join DESTRA.

Altri suggerimenti

Devi fornire un join in entrambi 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 qualcosa del genere. Non dimenticare che un UNION elimina i duplicati, quindi se vuoi che vengano inclusi duplicati, 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

Espandere la risposta di gbn sopra per coloro che hanno chiesto. Ecco come farlo con il sindacato come prima parte del join sinistro.

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top