Database
 sql >> Database >  >> RDS >> Database

Tipi di SQL JOIN

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:

  1. Unione interna
  2. Unisci esterno sinistro
  3. Unisciti all'esterno destro
  4. Partecipazione esterna completa
  5. 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 Join     

Esempio 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: