Kakšna je razlika med INNER JOIN
, LEFT JOIN
, RIGHT JOIN
in FULL JOIN
?
v MySQL?
V veliko pomoč vam bo branje tega izvirnega članka na portalu The Code Project: Visual Representation of SQL Joins.
Oglejte si tudi to objavo: SQL SERVER - boljša zmogljivost - LEFT JOIN ali NOT IN?.
Prvotnega najdete na: Razlika med JOIN in OUTER JOIN v MySQL.
INNER JOIN pridobi vse zapise, ki so skupni obema tabelama na podlagi posredovanega stavka ON.
LEFT JOIN pridobi vse zapise iz levo povezane tabele, vendar če ste izbrali nekatere stolpce iz desne tabele, bodo ti stolpci, če ni povezanih zapisov, vsebovali NULL.
RIGHT JOIN je podoben zgornjemu, vendar dobi vse zapise iz desne tabele.
FULL JOIN pridobi vse zapise iz obeh tabel in v stolpce, v katerih ni povezanih zapisov v nasprotni tabeli, vnese NULL.
Klavzula SQL JOIN se uporablja za združevanje vrstic iz dveh ali več tabel, na podlagi skupnega polja med njimi.
V jeziku SQL so na voljo različne vrste združevanja:
INNER JOIN: vrne vrstice, če je v obeh tabelah ujemanje.
LEFT JOIN: vrne vse vrstice iz leve tabele, tudi če v desni tabeli ni zadetkov.
PRAVI SPLET: vrne vse vrstice iz desne tabele, tudi če v levi tabeli ni zadetkov.
FULL JOIN: Združuje rezultate levega in desnega zunanjega spajanja.
Združena tabela bo vsebovala vse zapise iz obeh tabel in izpolnila NULL za manjkajoča ujemanja na obeh straneh.
SELF JOIN: uporablja se za združevanje tabele s samo seboj, kot da bi bili dve tabeli, pri čemer se v stavku SQL začasno preimenuje vsaj ena tabela.
CARTESIAN JOIN: vrne kartezični produkt nizov zapisov iz dveh ali več združenih tabel.
Vsako od prvih štirih združitev lahko vzamemo v podrobnostih :
Imamo dve preglednici z naslednjimi vrednostmi.
TabelaA
id firstName lastName
.......................................
1 arun prasanth
2 ann antony
3 sruthy abc
6 new abc
TabelaB
id2 age Place
................
1 24 kerala
2 24 usa
3 25 ekm
5 24 chennai
....................................................................
PRIKLJUČITEV NOVEGA ČLANA
Note :podaja presečišče dveh tabel, tj. vrstice, ki so skupne v tabelahA inB
Sintaksa
SELECT table1.column1, table2.column2...
FROM table1
INNER JOIN table2
ON table1.common_field = table2.common_field;
Uporabite jo v naši vzorčni tabeli :
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
INNER JOIN TableB
ON TableA.id = TableB.id2;
Rezultat bo
firstName lastName age Place
..............................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
LEFT JOIN
Note : dobite vse izbrane vrstice v tabeliA in vse skupne izbrane vrstice v tabeliB.
Sintaksa
SELECT table1.column1, table2.column2...
FROM table1
LEFT JOIN table2
ON table1.common_field = table2.common_field;
Uporabite jo v naši vzorčni tabeli :
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
LEFT JOIN TableB
ON TableA.id = TableB.id2;
Rezultat
firstName lastName age Place
...............................................................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
new abc NULL NULL
PRAVI SPOJ
Note : dobite vse izbrane vrstice v tabeliB in vse skupne izbrane vrstice v tabeliA.
Sintaksa
SELECT table1.column1, table2.column2...
FROM table1
RIGHT JOIN table2
ON table1.common_field = table2.common_field;
Uporabite jo v naši vzorčni tabeli :
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
RIGHT JOIN TableB
ON TableA.id = TableB.id2;
Rezultat
firstName lastName age Place
...............................................................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
NULL NULL 24 chennai
FULL JOIN
Note :Vrne vse izbrane vrednosti iz obeh tabel.
Sintaksa
SELECT table1.column1, table2.column2...
FROM table1
FULL JOIN table2
ON table1.common_field = table2.common_field;
Uporabite jo v naši vzorčni tabeli :
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
FULL JOIN TableB
ON TableA.id = TableB.id2;
Rezultat
firstName lastName age Place
...............................................................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
new abc NULL NULL
NULL NULL 24 chennai
Zanimivo dejstvo
Za INNER spajanje vrstni red ni pomemben
Za (levo, desno ali polno) zunanje spajanje je vrstni red pomemben
Raje si oglejte to Povezava, ki vam bo dala zanimive podrobnosti o vrstnem redu združevanja