SQL JOIN combina una o più tabelle in base alla loro relazione. SQL JOIN coinvolge una tabella padre e una relazione di tabella figlio.
Esistono diversi tipi di SQL JOINS:
- Unione interna
- Unisci esterno sinistro
- Unisciti all'esterno destro
- Partecipazione esterna completa
- Partecipa incrociata.
Comprendiamo ogni tipo di join SQL con l'aiuto di esempi.
Unione interiore
Inner Join in SQL è un join ampiamente utilizzato. Ha recuperato tutti i record da entrambe le tabelle fino a quando ea meno che la condizione non corrispondesse. Significa che questo join restituirà solo quelle righe comuni in entrambe le tabelle.
Sintassi di SQL Inner Join:
SELECT Nome_tabella1.Nome_colonna1, Nome_tabella1.Nome_colonna2, Nome_tabella1.Nome_colonna3,Nome_tabella2.Nome_colonna1,Nome_tabella2.Nome_colonna2, Nome_tabella2.Nome_colonna3, FROM Nome_tabella1 INNER JOIN Nome_tabella2 ON Nome_tabella1.Nome_colonna =Nome_tabella2.Nome_colonna;
Considera le tabelle già esistenti, che hanno determinati dati:
Tabella 1:Dipendenti
ID DIPENDENTE | FIRST_NAME | COGNOME | STIPENDIO | CITTÀ | REPARTO | RIDESTORE |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
1003 | NICHIL | VANI | 50500 | JAIPUR | FM | 2 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FM | 2 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | C# | 5 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FM | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | MUMBAI | PROVA | 4 |
4002 | ASHWINI | BAGAGLIO | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | PROVA | 4 |
Tabella 2:Gestore
ID gestore | nome_gestore | dipartimento_direttore |
1 | Snehdeep Kaur | ORACLE |
2 | Kirti Kirtane | FM |
3 | Abhishek Manish | JAVA |
4 | Anupam Mishra | PROVA |
5 | Akash Kadam | C# |
Tabella 3:Laptop:
LAPTOPID | NOME | ID DIPENDENTE |
L101 | DELL | NULLO |
L102 | HP | 1002 |
L103 | LENOVO | NULLO |
L104 | HP | 3003 |
L105 | DELL | 4002 |
L106 | LENOVO | 4003 |
L107 | DELL | 5001 |
L108 | HP | NULLO |
L109 | DELL | NULLO |
L110 | HP | NULLO |
Esempi di SQL Inner Join
Esempio 1: Esegui una query per unire la tabella dipendente e la tabella manager e visualizzare i dettagli dei dipendenti come ID dipendente, nome dipendente, stipendio dalla tabella dipendente e ID manager e nome manager dalla tabella manager.
SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, M.MANAGERID, M.MANAGERID_NAME DAI DIPENDENTI E INNER JOIN MANAGER M SU E.MANAGERID =M.MANAGERID;
Nella query precedente, abbiamo recuperato l'ID dipendente, il nome, il cognome, lo stipendio dalla tabella del dipendente e l'ID manager, il nome del manager dalla tabella manager in cui la colonna ID manager della tabella dei dipendenti è uguale alla colonna ID manager della tabella manager. La query restituirà tutti i record delle corrispondenze da entrambe le tabelle. L'ID gestore è una colonna comune tra entrambe le tabelle. E è un nome alias per la tabella del dipendente, mentre M è per la tabella del manager. Il campo dell'ID manager viene inserito come chiave esterna nella tabella dei dipendenti. L'ID manager funziona come chiave primaria nella tabella manager, che crea una relazione padre-figlio tra le due tabelle.
Risultato:
ID DIPENDENTE | FIRST_NAME | COGNOME | STIPENDIO | RIDESTORE | MANAGER_NAME |
1001 | VAIBHAVI | MISHRA | 65500 | 1 | Sneedeep Kaur |
2001 | PRACHI | SHARMA | 55500 | 1 | Sneedeep Kaur |
4003 | RUCHIKA | AGARWAL | 60000 | 1 | Sneedeep Kaur |
1003 | NICHIL | VANI | 50500 | 2 | Kirti kirtane |
2002 | BHAVESH | JAIN | 65500 | 2 | Kirti kirtane |
3002 | ANUJA | WANRE | 50500 | 2 | Kirti kirtane |
3001 | PRANOTI | SHENDE | 55500 | 3 | Abhishek Manish |
3003 | DEEPAM | JAUHARI | 58500 | 3 | Abhishek Manish |
4002 | ASHWINI | BAGAGLIO | 54500 | 3 | Abhishek Manish |
4001 | RAJESH | GOUD | 60500 | 4 | Anupam Mishra |
5001 | ARCHIT | SHARMA | 55500 | 4 | Anupam Mishra |
1002 | VAIBHAV | SHARMA | 60000 | 5 | Akash Kadam |
2003 | RUCHIKA | JAIN | 50000 | 4 | Akash Kadam |
I record vengono visualizzati in ordine crescente in base all'ID gestore.
Esempio 2: Eseguire una query per unire la tabella dipendente e la tabella manager e visualizzare i dettagli del dipendente come ID dipendente, nome dipendente, stipendio dalla tabella del dipendente e ID manager e reparto manager dalla tabella manager in cui lo stipendio del dipendente è maggiore di 58000.
SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, M.MANAGERID, M.MANAGERID_DEPARTMENT FROM EMPLOYEES E INNER JOIN MANAGER M ON E.MANAGERID =M.MANAGERID WHERE SALARY> 58000;
Nella query precedente, abbiamo recuperato l'ID dipendente, il nome, il cognome, lo stipendio dalla tabella del dipendente, l'ID manager e il dipartimento manager dalla tabella manager in cui l'ID manager dalla tabella dei dipendenti è uguale all'ID manager dal manager tabella solo i record dei dipendenti il cui stipendio è maggiore di 58000.
Risultato:
ID DIPENDENTE | FIRST_NAME | COGNOME | STIPENDIO | RIDESTORE | MANAGER_REPARTMENT |
1001 | VAIBHAVI | MISHRA | 65500 | 1 | ORACLE |
4003 | RUCHIKA | AGARWAL | 60000 | 1 | ORACLE |
2002 | BHAVESH | JAIN | 65500 | 2 | FM |
3003 | DEEPAM | JAUHARI | 58500 | 3 | JAVA |
4001 | RAJESH | GOUD | 60500 | 4 | PROVA |
1002 | VAIBHAV | SHARMA | 60000 | 5 | C# |
Vengono visualizzati solo sei record in cui lo stipendio di un dipendente supera 58000.
Esempio 3: Eseguire una query per unire la tabella Dipendenti e la tabella Laptop, visualizzare i dettagli dei dipendenti come ID dipendente, nome dipendente e stipendio, la città dal tavolo del dipendente, l'ID laptop e il nome del laptop dal tavolo laptop
SELECT EMP.EMPLOYEEID, EMP.FIRST_NAME, EMP.SALARY, EMP.CITY, LAP.LAPTOPID, LAP. NOME DAI DIPENDENTI EMP INNER JOIN LAPTOP LAP ON EMP.EMPLOYEEID =LAP.EMPLOYEEID;
Nella query precedente, abbiamo recuperato l'ID del dipendente, il nome, lo stipendio, la città dall'ID del laptop del tavolo dei dipendenti e il nome dal tavolo del laptop in cui l'id del dipendente dalla tabella del dipendente è uguale all'id del dipendente dal tavolo del laptop. L'ID dipendente è una chiave esterna nella tabella Laptop, che crea una relazione padre-figlio tra la tabella Employee e la tabella Laptop.
Risultato:
ID DIPENDENTE | FIRST_NAME | STIPENDIO | CITTÀ | LAPTOPID | NOME |
1002 | VAIBHAV | 60000 | NOIDA | L102 | HP |
3003 | DEEPAM | 58500 | MUMBAI | L104 | HP |
4002 | ASHWINI | 54500 | NOIDA | L105 | DELL |
4003 | RUCHIKA | 60000 | DELHI | L106 | LENOVO |
5001 | ARCHIT | 55500 | DELHI | L107 | DELL |
Vengono visualizzati solo cinque record di dipendenti.
Esempio 4: Scrivi una query per visualizzare l'ID dipendente, il nome, lo stipendio e il dipartimento dalla tabella dei dipendenti ID manager e nome manager dalla tabella manager utilizzando inner join dove stipendio> 55000 e dipartimento è Oracle.
SELECT EMPLOYEEID, FIRST_NAME, STIPENDIO, REPARTMENT, M.MANAGERID, M.MANAGERID_NAME FROM EMPLOYEES E INNER JOIN MANAGER M ON E.MANAGERID =M.MANAGERID WHERE STIPENDIO> 55000 AND REPARTMENT ='ORACLE';
Nell'esempio di query di unione sopra, mostriamo i dettagli del dipendente come ID, nome, stipendio e reparto dalla tabella del dipendente, ID manager e nome manager dalla tabella manager dove l'ID manager dalla tabella dei dipendenti è uguale all'id manager da il manager solo quei dipendenti il cui stipendio è superiore a 55000 e il Dipartimento è Oracle.
Risultato:
ID DIPENDENTE | FIRST_NAME | STIPENDIO | REPARTO | RIDESTORE | MANAGER_NAME |
1001 | VAIBHAVI | 65500 | ORACLE | 1 | Snehdeep Kaur |
2001 | PRACHI | 55500 | ORACLE | 1 | Snehdeep Kaur |
4003 | RUCHIKA | 60000 | ORACLE | 1 | Snehdeep Kaur |
Solo tre dipendenti il cui stipendio è superiore a 55000 e il dipartimento è Oracle.
Esempio 5: Eseguire una query di unione nella tabella Dipendenti, Manager e Laptop e visualizzare i dettagli dei dipendenti, l'ID manager e l'ID laptop.
SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, M.MANAGERID, L.LAPTOPID FROM EMPLOYEES E INNER JOIN MANAGER M ON E.MANAGERID =M.MANAGERID INNER JOIN LAPTOP L ON E.EMPLOYEEID =L.EMPLOYEEID;
La query precedente mostra l'ID del dipendente, il nome, il cognome, l'ID del manager e l'ID del laptop dai dipendenti, dal manager e dalle tabelle del laptop. Uniamo tre tavoli. L'ID dipendente è una colonna comune tra i dipendenti e la tabella del laptop e crea una relazione padre-figlio tra queste tre tabelle. Tra dipendenti e manager, l'ID gestore tabella è la colonna comune.
Risultato:
ID DIPENDENTE | FIRST_NAME | COGNOME | RIDESTORE | LAPTOPID |
4003 | RUCHIKA | AGARWAL | 1 | L106 |
3003 | DEEPAM | JAUHARI | 3 | L104 |
4002 | ASHWINI | BAGAGLIO | 3 | L105 |
5001 | ARCHIT | SHARMA | 4 | L107 |
1002 | VAIBHAV | SHARMA | 5 | L102 |
Unisci esterno sinistro
Il join esterno sinistro restituirà tutti i record della tabella sul lato sinistro del join e i record corrispondenti per la tabella sul lato destro del join. Il set di risultati contiene null per i record che non sono comuni sul lato destro.
Sintassi del join esterno sinistro:
SELECT Nome_tabella1.Nome_colonna1, Nome_tabella1.Nome_colonna2, Nome_tabella1.Nome_colonna3,Nome_tabella2.Nome_colonna1,Nome_tabella2.Nome_colonna2, Nome_tabella2.Nome_colonna3, FROM Nome_tabella1 SINISTRA ESTERNA JOIN Nome_tabella2 ON Nome_tabella1.Nome_colonna =Nome_tabella2; Considera le tabelle esistenti, che hanno i seguenti record:Tabella 1:Dipendenti
ID DIPENDENTE | FIRST_NAME | COGNOME | STIPENDIO | CITTÀ | REPARTO | RIDESTORE |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
1003 | NICHIL | VANI | 50500 | JAIPUR | FM | 2 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FM | 2 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | C# | 5 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FM | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | MUMBAI | PROVA | 4 |
4002 | ASHWINI | BAGAGLIO | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | PROVA | 4 |
Tabella 2:Gestore
ID gestore | nome_gestore | dipartimento_direttore |
1 | Snehdeep Kaur | ORACLE |
2 | Kirti Kirtane | FM |
3 | Abhishek Manish | JAVA |
4 | Anupam Mishra | PROVA |
5 | Akash Kadam | C# |
Tabella 3:laptop
LAPTOPID | NOME | ID DIPENDENTE |
L101 | DELL | NULLO |
L102 | HP | 1002 |
L103 | LENOVO | NULLO |
L104 | HP | 3003 |
L105 | DELL | 4002 |
L106 | LENOVO | 4003 |
L107 | DELL | 5001 |
L108 | HP | NULLO |
L109 | DELL | NULLO |
L110 | HP | NULLO |
Esempi di SQL Left Outer Join
Esempio 1: Esegui una query di join esterno sinistro sulla tabella Dipendenti e sulla tabella Laptop, dove vengono visualizzati ID dipendente, nome dipendente e ID laptop.
SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, L.LAPTOPID, L.NAME FROM EMPLOYEES E LEFT OUTER UNISCITI AL LAPTOP L ON E.EMPLOYEEID =L.EMPLOYEEID;
Nella query precedente, abbiamo visualizzato l'ID del dipendente, il nome, il cognome dall'ID del laptop del tavolo del dipendente e il nome dal tavolo del laptop ed è stata eseguita una query di join esterno sinistro su queste due tabelle. La query restituirà valori null sul lato destro della tabella se le righe non sono simili tra le tabelle.
Risultato:
ID DIPENDENTE | FIRST_NAME | COGNOME | LAPTOPID | NOME |
1001 | VAIBHAVI | MISHRA | NULLO | NULLO |
1002 | VAIBHAV | SHARMA | L102 | HP |
1003 | NICHIL | VANI | NULLO | NULLO |
2001 | PRACHI | SHARMA | NULLO | NULLO |
2002 | BHAVESH | JAIN | NULLO | NULLO |
2003 | RUCHIKA | JAIN | NULLO | NULLO |
3001 | PRANOTI | SHENDE | NULLO | NULLO |
3002 | ANUJA | WANRE | NULLO | NULLO |
3003 | DEEPAM | JAUHARI | L104 | HP |
4001 | RAJESH | GOUD | NULLO | NULLO |
4002 | ASHWINI | BAGAGLIO | L105 | DELL |
4003 | RUCHIKA | AGARWAL | L106 | LENOVO |
5001 | ARCHIT | SHARMA | L107 | DELL |
Esempio 2: Scrivi una query per recuperare l'ID, il nome, il cognome e lo stipendio del dipendente dal tavolo del dipendente a sinistra del join esterno sul tavolo del laptop dove stipendio> 55000.
SELEZIONARE E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, L.LAPTOPID, L.NAME FROM EMPLOYEES E LEFT OUTER UNISCITI AL LAPTOP L ON E.EMPLOYEEID =L.EMPLOYEEID WHERE STIPENDIO> 55000;
Nella query precedente, abbiamo recuperato i dettagli del dipendente dalla tabella dei dipendenti e i dettagli del laptop dalla tabella del laptop, ma solo i dettagli del dipendente in cui lo stipendio è maggiore di 55000. Abbiamo eseguito la query di join esterno sinistro su queste due tabelle. La query restituirà valori null sul lato destro della tabella se le righe non sono simili tra le tabelle.
Risultato:
ID DIPENDENTE | FIRST_NAME | COGNOME | STIPENDIO | LAPTOPID | NOME |
1001 | VAIBHAVI | MISHRA | 65500 | NULLO | NULLO |
1002 | VAIBHAV | SHARMA | 60000 | L102 | HP |
2001 | PRACHI | SHARMA | 55500 | NULLO | NULLO |
2002 | BHAVESH | JAIN | 65500 | NULLO | NULLO |
3001 | PRANOTI | SHENDE | 55500 | NULLO | NULLO |
3003 | DEEPAM | JAUHARI | 58500 | L104 | HP |
4001 | RAJESH | GOUD | 60500 | NULLO | NULLO |
4003 | RUCHIKA | AGARWAL | 60000 | L106 | LENOVO |
5001 | ARCHIT | SHARMA | 55500 | L107 | DELL |
Partecipa all'esterno destro
Il join esterno destro restituirà tutti i record della tabella sul lato destro del join e i record corrispondenti per la tabella sul lato sinistro del join. Il set di risultati contiene null per i record che non sono comuni sul lato sinistro.
Sintassi del join esterno destro:
SELECT Nome_tabella1.Nome_colonna1, Nome_tabella1.Nome_colonna2, Nome_tabella1.Nome_colonna3,Nome_tabella2.Nome_colonna1,Nome_tabella2.Nome_colonna2, Nome_tabella2.Nome_colonna3, FROM Nome_tabella1 RIGHT OUTER JOIN Nome_tabella2 ON Nome_tabella1.Nome_colonna =Nome_tabella2; Esempi di SQL Right Outer JoinEsempio 1: Esegui una query di join esterno destro sul tavolo dei dipendenti e sul laptop, dove mostra l'ID dipendente, il nome dei dipendenti.
SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, L.LAPTOPID, L.NAME FROM EMPLOYEES E Right OUTER JOIN LAPTOP L ON E.EMPLOYEEID =L.EMPLOYEEID;Nella query precedente, abbiamo visualizzato l'ID del dipendente, il nome, il cognome dall'ID del laptop del tavolo del dipendente e il nome dal tavolo del laptop ed abbiamo eseguito la query di join esterno destro su queste due tabelle. La query restituirà valori null sul lato sinistro della tabella se le righe non sono simili tra le tabelle.
Risultato:
ID DIPENDENTE | FIRST_NAME | COGNOME | LAPTOPID | NOME |
NULLO | NULLO | NULLO | L101 | DELL |
1002 | VAIBHAV | SHARMA | L102 | HP |
NULLO | NULLO | NULLO | L103 | LENOVO |
3003 | DEEPAM | JAUHARI | L104 | HP |
4002 | ASHWINI | BAGAGLIO | L105 | DELL |
4003 | RUCHIKA | AGARWAL | L106 | LENOVO |
5001 | ARCHIT | SHARMA | L107 | DELL |
NULLO | NULLO | NULLO | L108 | HP |
NULLO | NULLO | NULLO | L109 | DELL |
NULLO | NULLO | NULLO | L110 | HP |
Esempio 2: Scrivi una query per recuperare l'ID, il nome e il cognome del dipendente dalla tabella del dipendente. Il join esterno destro sul tavolo del laptop in cui il nome del laptop include uno degli elenchi è Dell, HP.
SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, L.LAPTOPID, L.NAME FROM EMPLOYEES E RIGHT OUTER JOIN LAPTOP L ON E.EMPLOYEEID =L.EMPLOYEEID WHERE L.NAME IN (' DELL', 'HP');
Nella query precedente, abbiamo mostrato i dettagli dei dipendenti dai dettagli del laptop del tavolo del dipendente sul tavolo del laptop. Abbiamo eseguito la query di join esterno corretta su queste due tabelle solo che il dipendente il cui nome di laptop include uno degli elenchi è Dell e HP. La query restituirà valori null sul lato sinistro della tabella se le righe non sono simili tra le tabelle.
Risultato:
ID DIPENDENTE | FIRST_NAME | COGNOME | LAPTOPID | NOME |
NULLO | NULLO | NULLO | L101 | DELL |
1002 | VAIBHAV | SHARMA | L102 | HP |
3003 | DEEPAM | JAUHARI | L104 | HP |
4002 | ASHWINI | BAGAGLIO | L105 | DELL |
5001 | ARCHIT | SHARMA | L107 | DELL |
NULLO | NULLO | NULLO | L108 | HP |
NULLO | NULLO | NULLO | L109 | DELL |
NULLO | NULLO | NULLO | L110 | HP |
Partecipazione esterna completa
L'unione esterna completa unisce il risultato di entrambe le operazioni di unione esterna sinistra e dell'unione esterna destra. Full Outer Join è lo stesso di Cross Join. Full Outer Joins restituisce l'output, dove le righe sono comuni o non comuni tra le tabelle.
Sintassi del join esterno completo:
SELECT COLUMNNAME1, COLUMNNAME2 DALLA TABELLA1 FULL JOIN TABLE2;
Esempio 1: Scrivi una query per visualizzare l'ID dipendente, il nome e il cognome dall'ID manager dalla tabella dei dipendenti full out join Tabella manager in cui lo stipendio del dipendente è maggiore di 65000.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, M.MANAGERID FROM EMPLOYEES FULL JOIN MANAGER M WHERE STIPENDIO> 65000;
Nella query precedente, abbiamo visualizzato i dettagli dei dipendenti e i dettagli del manager dalla tabella dipendenti e manager in cui lo stipendio dei dipendenti è superiore a 65000 utilizzando la full join. Unisci per intero ogni Riga del tavolo del dipendente su ogni Riga del tavolo del manager, ovvero il prodotto cartesiano avverrà. M * N
Risultato:
ID DIPENDENTE | FIRST_NAME | COGNOME | RIDESTORE |
1001 | VAIBHAVI | MISHRA | 1 |
1001 | VAIBHAVI | MISHRA | 2 |
1001 | VAIBHAVI | MISHRA | 3 |
1001 | VAIBHAVI | MISHRA | 4 |
1001 | VAIBHAVI | MISHRA | 5 |
2002 | BHAVESH | JAIN | 1 |
2002 | BHAVESH | JAIN | 2 |
2002 | BHAVESH | JAIN | 3 |
2002 | BHAVESH | JAIN | 4 |
2002 | BHAVESH | JAIN | 5 |
Come possiamo vedere, l'ID dipendente 1001 si unisce a ciascun ID manager, lo stesso con l'ID dipendente 2002.
Esempio 2: Esegui una query di join esterno completo sul tavolo Dipendenti e sul tavolo del laptop, dove lo stipendio del dipendente è maggiore di 60000 e la posizione del dipendente è Pune.
SELECT LAPTOPID, E.EMPLOYEEID, E.FIRST_NAME, E.SALARY, E.CITY FROM LAPTOP FULL JOIN EMPLOYEES E WHERE SALARY> 60000 AND CITY ='PUNE';
Nella query precedente, visualizziamo l'ID del laptop, l'ID del dipendente, il nome, lo stipendio e la città dei dipendenti che si uniscono completamente al laptop solo quelli il cui stipendio è maggiore di 60000 e la città è Pune. Se entrambe le condizioni corrispondono per il solo dipendente, il record viene recuperato.
Risultato:
Partecipa incrociata
I cross join in SQL non sono altro che chiamati prodotti cartesiani. Ogni riga di una tabella viene combinata o unita a ciascuna riga dell'altra tabella. M * N è un'unione incrociata
Sintassi di Cross join:
SELECT COLUMNNAME1, COLUMNNAME2 DA TABLE1 CROSS JOIN TABLE2;
Esempio 1: Scrivi una query per eseguire un'operazione di unione incrociata sulla tabella dipendenti e sulla tabella manager in cui il nome del dipendente inizia con A
SELECT EMPLOYEEID, FIRST_NAME, M.MANAGERID FROM EMPLOYEES CROSS JOIN MANAGER M DOVE FIRST_NAME COME 'A%';
Nell'esempio di query di join esterno completo sopra, abbiamo recuperato i dettagli del dipendente e i dettagli del manager dalla tabella del dipendente e dalla tabella del manager, ma solo quei record in cui il nome del dipendente inizia con la lettera "A".
Risultato:
Il risultato mostra che l'ID dipendente è un cross join con ciascuna riga dell'ID manager.
M * N Qui, M =3; ID dipendente dalle tabelle dipendenti
N =5; ID manager dalla tabella manager 3 * 5 =15 righe.
Esempio 2: Scrivi una query per eseguire operazioni di unione incrociata sul tavolo del laptop e sul tavolo dei dipendenti in cui lo stipendio dei dipendenti è maggiore di 58000 e Mumbai.
SELECT LAPTOPID, NAME, E.EMPLOYEEID FROM LAPTOP CROSS UNISCITI AI DIPENDENTI E WHERE SALARY> 58000 AND CITY ='MUMBAI';
Nella query precedente, abbiamo visualizzato l'ID del laptop, il nome e l'ID del dipendente dal tavolo del laptop per eseguire l'operazione di unione incrociata sul tavolo dei dipendenti in cui lo stipendio del dipendente è maggiore di 58000 e la città è Pune. Il cross join si comporta come M * N.
Risultato: