Introduzione a Joins in MySQL
MySQL Joins svolge un ruolo importante quando dobbiamo unire due tabelle insieme in base a uno o più valori comuni condivisi da due tabelle.
Esempio : consideriamo che abbiamo due tabelle, una è la tabella dei dipendenti composta da employee_id, phn_no, stipendio e dipartimento. Un'altra tabella è la tabella degli indirizzi che consiste in dipendente_id e indirizzo. Se dobbiamo scoprire ID_impiegato, dipartimento e indirizzo, dobbiamo unire entrambi i tavoli che condividono il campo comune come impiegato_id.
Query :
SELECT e1.employee_id, e1.department, a1.address
FROM employee e1
INNER JOIN address a1
ON e1.employee_id = a1.employee_id;
I 6 migliori tipi di join in MySQL
Esistono diversi tipi di join in MySQL. I join di seguito indicati si trovano nell'uso quotidiano e sono molto utili quando si eseguono molte query in scenari reali.
- Join interno
- Join sinistro
- Unisciti a destra
- Join esterno completo
- Self-join
- Cross join
1. Join interno
Il join interno restituisce il valore corrispondente in entrambe le tabelle.
Questa porzione arriva nell'output come mostrato nella figura sopra.
Esempio 1:
emp_id | Dipartimento | Stipendio |
1001 | IT | 1000 |
1002 | CSR | 800 |
1003 | IT | 2000 |
Questa è la tabella dei dipendenti.
emp_id | Indirizzo |
1002 | Delhi |
1003 | Bangalore |
1005 | BBSR |
Ecco la tabella degli indirizzi di quei dipendenti. La chiave primaria emp_id dell'impiegato della tabella padre viene utilizzata come chiave esterna nella tabella degli indirizzi che è la tabella figlio. Troveremo emp_id, dipartimento e indirizzo di un dipendente utilizzando il join interno. Perché stati di join interno Recupera i record presenti / comuni in entrambe le tabelle.
Query:
SELECT emp.emp_id, emp.department, ads.address
FROM employee AS emp
INNER JOIN address AS ads
ON emp.emp_id = ads.emp_id;
Diamo un alias al nome della tabella solo per evitare più tempo. Nella query sopra, usiamo l'alias 'emp' per la tabella dei dipendenti e 'ads' per la tabella degli indirizzi.
Produzione:
emp_id | Dipartimento | Indirizzo |
1002 | CSR | Delhi |
1003 | IT | Bangalore |
Come nell'esempio precedente emp_id 1002 e 1003 erano comuni tra le due tabelle, il comando join interno recupera l'output solo per questi dipendenti.
Esempio n. 2:
Qui abbiamo 2 tabelle, table1 e table2. Entrambe le tabelle sono costituite da un attributo ciascuno rispettivamente come colonna A e colonna B.
Tabella 1
Colonna A |
1 |
1 |
2 |
3 |
4 |
Tavolo 2
Colonna B |
1 |
2 |
2 |
3 |
3 |
5 |
Query:
If we apply inner join here,
SELECT * FROM Table1
INNER JOIN table2
ON columnA = columnB;
Produzione:
Colonna A | Colonna B |
1 | 1 |
1 | Nullo |
2 | 2 |
Nullo | 2 |
3 | 3 |
Nullo | 3 |
2. Join sinistro
Questo join restituisce tutti i record dalla tabella di sinistra e i record corrispondenti dalla tabella di destra.
Come mostra il diagramma sopra, è costituito da tutti i record della tabella A e da quelli comuni di A e B.
Esempio 1:
Identificativo del cliente | Nome | Città |
1 | Harish | Cuttack |
2 | David | Bangalore |
3 | Mahesh | Bhubaneswar |
4 | Sam | Kolkata |
Tabella dei clienti:
ID ordine | Quantità | Identificativo del cliente |
19868 | 7.575, 00 | 4 |
19976 | 434.654, 00 | 2 |
99.680 | 7.457, 00 | 3 |
Tabella degli ordini:
Scopriremo customer_id, name e order_id associati utilizzando il join sinistro.
Query:
SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
LEFT JOIN order ord
ON cust.customer_id = ord.customer_id;
Produzione:
Identificativo del cliente | Nome | ID ordine |
1 | Harish | nullo |
2 | David | 19976 |
3 | Mahesh | 99.680 |
4 | Sam | 19868 |
Come discusso, questo join sinistro ha recuperato tutti gli ID cliente dalla tabella dei clienti e quelli comuni tra le due tabelle. Per customer_id '1' verrà visualizzato come 'null' perché '1' customer_id non è presente nella tabella degli ordini.
Esempio n. 2:
Qui abbiamo 2 tabelle, table1 e table2. Entrambe le tabelle sono costituite da un attributo ciascuno rispettivamente come colonna A e colonna B.
Tabella 1
Colonna A |
1 |
1 |
2 |
2 |
3 |
Tavolo 2
Colonna B |
1 |
2 |
2 |
4 |
4 |
5 |
5 |
Query:
If we apply left join on above 2 tables,
SELECT * FROM table1
LEFT JOIN table2
ON columnA = columnB;
Colonna A | Colonna B |
1 | 1 |
1 | Nullo |
2 | 2 |
2 | 2 |
3 | Nullo |
3. Partecipa a destra
Questo join restituisce tutti i record dalla tabella di destra e quelli corrispondenti dalla tabella di sinistra.
Il diagramma sopra mostra che recupera tutti i record dalla tabella B e quello comune presente in entrambe le tabelle.
Esempio:
Identificativo del cliente | Nome | Città |
3 | Mahesh | Bhubaneswar |
4 | Sam | Kolkata |
5 | ariete | Mumbai |
Tabella dei clienti:
ID ordine | Quantità | Identificativo del cliente |
19868 | 7.575, 00 | 4 |
19976 | 434.654, 00 | 2 |
99.680 | 7.457, 00 | 3 |
Tabella degli ordini:
Scopriremo customer_id, name e order_id associati usando il join giusto.
Query:
SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
RIGHT JOIN order ord
ON cust.customer_id = ord.customer_id;
Produzione:
Identificativo del cliente | Nome | ID ordine |
2 | nullo | 19976 |
3 | Mahesh | 99.680 |
4 | Sam | 19868 |
Mentre eseguiamo il join corretto qui, la query ha recuperato tutti gli ID cliente dalla tabella degli ordini e i record comuni che si trovano in entrambe le tabelle.
4. Join esterno completo
Il join esterno completo restituisce tutti i record da entrambe le tabelle se è presente un campo comune condiviso.
Esempio:
Identificativo del cliente | Nome | Città |
3 | Mahesh | Bhubaneswar |
4 | Sam | Kolkata |
5 | ariete | Mumbai |
Tabella dei clienti:
ID ordine | Quantità | Identificativo del cliente |
19868 | 7.575, 00 | 4 |
19976 | 434.654, 00 | 2 |
99.680 | 7.457, 00 | 3 |
Tabella degli ordini:
Scopriremo customer_id, name e order_id ad esso associati utilizzando un join esterno completo.
Query:
SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
FULL OUTER JOIN order ord
ON cust.customer_id = ord.customer_id;
Produzione:
Identificativo del cliente | Nome | ID ordine |
2 | nullo | 19976 |
3 | Mahesh | 99.680 |
4 | Sam | 19868 |
5 | ariete | nullo |
Questo join esterno completo ha recuperato tutti gli ID cliente dalla tabella clienti e dalla tabella ordini.
5. Auto-join
Il self-join è un join regolare e qui la tabella si unisce solo a se stessa.
emp_id | Nome | PHONE_NO | Città | Nazione |
1001 | R. Madhvan | 9687687698 | Bangalore | India |
1002 | Gobu Sharma | 9856453423 | Pune | India |
1003 | Debasish Das | 8765456787 | Mumbai | India |
1004 | Amit Rout | 4567788635 | Pune | India |
1005 | Sambit Kar | 8789887873 | Hyderabad | India |
Ecco la tabella dei dipendenti composta da diversi campi. Scopriremo i dipendenti che vivono nella stessa città.
Query :
SELECT e1.name AS Employee_name1, e2.name AS employee_name2, e1.City
FROM employee e1, employee e2
WHERE e1.name e2.name
AND e1.city = e2.city;
Uscita :
Employee_name1 | Employee_name2 | e1.city |
Gobu Sharma | Amit Rout | Pune |
Amit Rout | Gobu Sharma | Pune |
6. Cross Join
Questo join produce un risultato in cui il numero di righe nella prima tabella viene moltiplicato per le righe nella seconda tabella. Questo tipo di risultato è chiamato Prodotto cartesiano. Se utilizziamo la clausola WHERE con questo join, funzionerà come join interno.
Esempio:
prod_id | Nome del prodotto | Prod_unit | Codice Identificativo dell'azienda |
1 | Mix Chex | Pz | 12 |
2 | Cheez-it | Pz | 15 |
3 | Biscotto | pezzi | 16 |
Tabella dei prodotti :
Codice Identificativo dell'azienda | Nome della ditta | Company_city |
15 | Foodies | Delhi |
16 | Jack n Jill | Cuttack |
17 | Naturale | Bangalore |
Tavolo dell'azienda :
Applicheremo un cross join a queste tabelle.
Query :
SELECT p.product_name, p.prod_unit, c.company_name
FROM product p
CROSS JOIN company c;
Uscita :
p.product_name | p.prod_unit | c.company_name |
Mix Chex | Pz | Foodies |
Cheez-it | Pz | Foodies |
Biscotto | Pz | Foodies |
Mix Chex | Pz | Jack n Jill |
Cheez-it | Pz | Jack n Jill |
Biscotto | Pz | Jack n Jill |
Mix Chex | Pz | Naturale |
Cheez-it | Pz | Naturale |
Biscotto | Pz | Naturale |
Conclusione
Il significato di questi join è molto importante mentre si lavora in scenari in tempo reale e anche in alcune altre tecnologie. In visualizzazioni come Tableau e Power BI, i join svolgono un ruolo vitale. La pratica strutturata di questo è la chiave per incorporare queste nuove tecniche e abilità.
Articolo raccomandato
Questa è una guida ai join in MySQL. Qui discutiamo i primi 6 tipi di join in MySQL come Inner, Left, Right, Full, Self, Cross e i suoi esempi insieme a Query e Output. puoi anche consultare i nostri articoli suggeriti per saperne di più -
- I 10 migliori comandi MySQL
- Introduzione agli operatori MySQL
- MySQL vs SQLite | Top 14 Confronto
- Le 23 principali funzioni della stringa MySQL
- Spiega Inserisci comando in MySQL con esempi
- Le 6 differenze principali tra chiave primaria e chiave esterna