Introductie tot Joins in MySQL
MySQL Joins speelt een belangrijke rol wanneer we twee tabellen moeten samenvoegen op basis van een of meer gemeenschappelijke waarden die door twee tabellen worden gedeeld.
Voorbeeld : Laten we eens kijken dat we twee tabellen hebben, één is de medewerkertabel die bestaat uit employee_id, phn_no, salaris en afdeling. Een andere tabel is de adrestabel die bestaat uit employee_id en adres. Als we werknemer-id, afdeling en adres moeten achterhalen, moeten we deelnemen aan beide tabellen die het gemeenschappelijke veld delen als werknemer-id.
Vraag :
SELECT e1.employee_id, e1.department, a1.address
FROM employee e1
INNER JOIN address a1
ON e1.employee_id = a1.employee_id;
Top 6 soorten joins in MySQL
Er zijn verschillende soorten Joins in MySQL. De onderstaande joins komen in het dagelijks gebruik voor en zijn het handigst bij het uitvoeren van veel vragen in echte scenario's.
- Innerlijke verbinding
- Links meedoen
- Rechts meedoen
- Volledige buitenste voeg
- Self-join
- Cross join
1. Innerlijke verbinding
Inner join retourneert de waarde die overeenkomt in beide tabellen.
Dit gedeelte komt in de uitvoer zoals weergegeven in de bovenstaande afbeelding.
Voorbeeld 1:
emp_id | afdeling | Salaris |
1001 | HET | 1000 |
1002 | CSR | 800 |
1003 | HET | 2000 |
Dit is de medewerkerstabel.
emp_id | Adres |
1002 | Delhi |
1003 | Bangalore |
1005 | BBSR |
Hier is de adrestabel van die werknemers. De primaire sleutel emp_id van de bovenliggende tabelmedewerker wordt gebruikt als de externe sleutel in de adrestabel die de onderliggende tabel is. We zullen de emp_id, afdeling en het adres vinden van één medewerker die inner join gebruikt. Omdat inner join staat haalt het de records die aanwezig / gemeenschappelijk zijn in beide tabellen.
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;
We geven een alias aan de tabelnaam alleen om meer tijdrovend te voorkomen. In de bovenstaande zoekopdracht gebruiken we de alias 'emp' voor de medewerkerstabel en 'advertenties' voor de adrestabel.
Output:
emp_id | afdeling | Adres |
1002 | CSR | Delhi |
1003 | HET | Bangalore |
Omdat in het bovenstaande voorbeeld emp_id 1002 en 1003 gebruikelijk was tussen beide tabellen, haalt het commando inner join alleen de uitvoer op voor deze werknemers.
Voorbeeld 2:
Hier hebben we 2 tabellen, table1 & table2. Beide tabellen bestaan uit één attribuut elk als respectievelijk kolom A en kolom B.
Tafel 1
Kolom A |
1 |
1 |
2 |
3 |
4 |
Tafel 2
Kolom B |
1 |
2 |
2 |
3 |
3 |
5 |
Query:
If we apply inner join here,
SELECT * FROM Table1
INNER JOIN table2
ON columnA = columnB;
Output:
Kolom A | Kolom B |
1 | 1 |
1 | Nul |
2 | 2 |
Nul | 2 |
3 | 3 |
Nul | 3 |
2. Linker deelname
Deze join retourneert alle records uit de linker tabel en de overeenkomende records uit de rechter tabel.
Zoals het diagram hierboven laat zien, bestaat het uit alle records van tabel A en de gemeenschappelijke uit A en B.
Voorbeeld 1:
Klanten ID | Naam | stad |
1 | Harish | Cuttack |
2 | David | Bangalore |
3 | Mahesh | Bhubaneswar |
4 | Sam | Kolkata |
Klantentabel:
Order ID | Bedrag | Klanten ID |
19868 | 7575, 00 | 4 |
19976 | 434.654, 00 | 2 |
99680 | 7457, 00 | 3 |
Bestellingstabel:
We zullen klant_id, naam en order_id vinden die zijn gekoppeld met behulp van link join.
Query:
SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
LEFT JOIN order ord
ON cust.customer_id = ord.customer_id;
Output:
Klanten ID | Naam | Order ID |
1 | Harish | nul |
2 | David | 19976 |
3 | Mahesh | 99680 |
4 | Sam | 19868 |
Zoals we dit hebben besproken, heeft left join alle klant-id's opgehaald uit de klantentabel en de gemeenschappelijke tussen beide tabellen. Voor customer_id '1' wordt deze weergegeven als 'null' omdat de '1' customer_id niet aanwezig is in de besteltabel.
Voorbeeld 2:
Hier hebben we 2 tabellen, table1 & table2. Beide tabellen bestaan uit één attribuut elk als respectievelijk kolom A en kolom B.
Tafel 1
Kolom A |
1 |
1 |
2 |
2 |
3 |
Tafel 2
Kolom 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;
Kolom A | Kolom B |
1 | 1 |
1 | Nul |
2 | 2 |
2 | 2 |
3 | Nul |
3. Rechts meedoen
Deze join retourneert alle records uit de rechtertabel en de overeenkomende records uit de linkertabel.
Het bovenstaande diagram toont dat het alle records uit tabel B haalt en de gemeenschappelijke die in beide tabellen aanwezig is.
Voorbeeld:
Klanten ID | Naam | stad |
3 | Mahesh | Bhubaneswar |
4 | Sam | Kolkata |
5 | RAM | Mumbai |
Klantentabel:
Order ID | Bedrag | Klanten ID |
19868 | 7575, 00 | 4 |
19976 | 434.654, 00 | 2 |
99680 | 7457, 00 | 3 |
Bestellingstabel:
We zullen klant-ID, naam en order-ID vinden die eraan zijn gekoppeld met de juiste join.
Query:
SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
RIGHT JOIN order ord
ON cust.customer_id = ord.customer_id;
Output:
Klanten ID | Naam | Order ID |
2 | nul | 19976 |
3 | Mahesh | 99680 |
4 | Sam | 19868 |
Omdat we hier correct join hebben uitgevoerd, heeft de query alle klant-ID's opgehaald uit de besteltabel en de gemeenschappelijke records in beide tabellen.
4. Volledige deelname aan de buitenwereld
De volledige outer join retourneert alle records uit beide tabellen als er een gemeenschappelijk veld wordt gedeeld.
Voorbeeld:
Klanten ID | Naam | stad |
3 | Mahesh | Bhubaneswar |
4 | Sam | Kolkata |
5 | RAM | Mumbai |
Klantentabel:
Order ID | Bedrag | Klanten ID |
19868 | 7575, 00 | 4 |
19976 | 434.654, 00 | 2 |
99680 | 7457, 00 | 3 |
Bestellingstabel:
We zullen klant-ID, naam en order-ID vinden die eraan zijn gekoppeld met behulp van een volledige outer join.
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;
Output:
Klanten ID | Naam | Order ID |
2 | nul | 19976 |
3 | Mahesh | 99680 |
4 | Sam | 19868 |
5 | RAM | nul |
Met deze volledige outer join werden alle klant-ID's van de klantentabel en de besteltabel opgehaald.
5. Zelf deelnemen
Self-join is een normale join en hier sluit de tabel zich alleen aan.
emp_id | Naam | Telefoon nr | stad | land |
1001 | R. Madhvan | 9687687698 | Bangalore | Indië |
1002 | Gobu Sharma | 9856453423 | Pune | Indië |
1003 | Debasish Das | 8765456787 | Mumbai | Indië |
1004 | Amit Rout | 4567788635 | Pune | Indië |
1005 | Sambit Kar | 8789887873 | Hyderabad | Indië |
Hier is de medewerkerstabel die uit verschillende velden bestaat. We zullen de werknemers ontdekken die in dezelfde stad wonen.
Vraag :
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;
Uitgang :
Employee_name1 | Employee_name2 | e1.city |
Gobu Sharma | Amit Rout | Pune |
Amit Rout | Gobu Sharma | Pune |
6. Cross-join
Deze join levert een resultaat op waarbij het aantal rijen in de eerste tabel wordt vermenigvuldigd met de rijen in de tweede tabel. Dit soort resultaat wordt het Cartesiaanse product genoemd. Als we de WHERE-clausule gebruiken met deze join, werkt dit als een innerlijke join.
Voorbeeld:
Prod_id | Productnaam | Prod_unit | Bedrijfs ID |
1 | Chex mix | pcs | 12 |
2 | Cheez-it | pcs | 15 |
3 | Biscuit | pcs | 16 |
Product tabel:
Bedrijfs ID | Bedrijfsnaam | Company_city |
15 | foodies | Delhi |
16 | Jack n Jill | Cuttack |
17 | natuurlijk | Bangalore |
Bedrijfstabel :
We zullen een cross-join toepassen op deze tabellen.
Vraag :
SELECT p.product_name, p.prod_unit, c.company_name
FROM product p
CROSS JOIN company c;
Uitgang :
p.product_name | p.prod_unit | c.company_name |
Chex mix | pcs | foodies |
Cheez-it | pcs | foodies |
Biscuit | pcs | foodies |
Chex mix | pcs | Jack n Jill |
Cheez-it | pcs | Jack n Jill |
Biscuit | pcs | Jack n Jill |
Chex mix | pcs | natuurlijk |
Cheez-it | pcs | natuurlijk |
Biscuit | pcs | natuurlijk |
Conclusie
De betekenis van die joins is erg belangrijk tijdens het werken in realtime scenario's en ook in sommige andere technologieën. In visualisaties zoals Tableau en Power BI spelen joins een cruciale rol. De gestructureerde praktijk hiervan is cruciaal om deze nieuwe technieken en vaardigheden in te bedden.
Aanbevolen artikel
Dit is een gids voor de Joins in MySQL. Hier bespreken we de top 6 soorten joins in MySQL zoals Inner, Left, Right, Full, Self, Cross en zijn voorbeelden, samen met Query en Output. u kunt ook onze voorgestelde artikelen doornemen voor meer informatie -
- Top 10 MySQL-opdrachten
- Inleiding tot MySQL-operators
- MySQL versus SQLite | Top 14 vergelijking
- Top 23 MySQL String-functies
- Uitleg Insert Command in MySQL met voorbeelden
- Top 6 Verschillen van primaire sleutel versus buitenlandse sleutel