Hva er en SQL JOIN
og hva er forskjellige typer?
En illustrasjon fra W3schools:
INNER JOIN - Bare poster som samsvarer med betingelsen i begge tabellene]1
LEFT JOIN - Alle poster fra tabell 1 i forbindelse med poster som samsvarer med betingelsen i tabell 2]2
RIGHT JOIN - Alle poster fra tabell 2 i forbindelse med poster fra tabell 1 som samsvarer med betingelsen]3
FULL OUTER JOIN - Kombinasjon av både venstre og høyre ytre sammenføyning som samsvarer med ON-klausulen, men som bevarer begge tabellene]4
SQL JOIN
?SQL JOIN er en metode for å hente data fra to eller flere databasetabeller.
SQL JOIN
ene?Det finnes totalt fem JOIN
er. De er:
1. JOIN or INNER JOIN
2. OUTER JOIN
2.1 LEFT OUTER JOIN or LEFT JOIN
2.2 RIGHT OUTER JOIN or RIGHT JOIN
2.3 FULL OUTER JOIN or FULL JOIN
3. NATURAL JOIN
4. CROSS JOIN
5. SELF JOIN
I denne typen JOIN
får vi alle poster som samsvarer med betingelsen i begge tabeller, og poster i begge tabeller som ikke samsvarer, rapporteres ikke.
Med andre ord er INNER JOIN
basert på det enkle faktum at: KUN de samsvarende oppføringene i BEGGE tabellene SKAL vises.
Merk at en JOIN
uten andre JOIN
-nøkkelord (som INNER
, OUTER
, LEFT
osv.) er en INNER JOIN
. Med andre ord, JOIN
er
et syntaktisk sukker for INNER JOIN
(se: https://stackoverflow.com/questions/565620/difference-between-join-and-inner-join).
OUTER JOIN` henter
Enten, de matchede radene fra den ene tabellen og alle radene i den andre tabellen. eller alle rader i alle tabeller (det spiller ingen rolle om det er samsvar eller ikke).
Det finnes tre typer Outer Join:
2.1 LEFT OUTER JOIN eller LEFT JOIN.
Denne sammenføyningen returnerer alle radene fra den venstre tabellen i forbindelse med de samsvarende radene fra den
høyre tabell. Hvis det ikke er noen kolonner som samsvarer i den høyre tabellen, returneres NULL
-verdier.
2.2 RIGHT OUTER JOIN eller RIGHT JOIN****.
Denne JOIN
returnerer alle radene fra den høyre tabellen sammen med de samsvarende radene fra den venstre tabellen.
venstre tabell. Hvis det ikke er noen kolonner som samsvarer i den venstre tabellen, returneres NULL
-verdier.
2.3 FULL OUTER JOIN eller FULL JOIN.
Denne JOIN
kombinerer LEFT OUTER JOIN
og RIGHT OUTER JOIN
. Den returnerer rader fra en av tabellene når betingelsene er oppfylt, og returnerer NULL
-verdien når det ikke er samsvar.
Med andre ord er OUTER JOIN
basert på det faktum at: KUN de samsvarende oppføringene i EN AV tabellene (RIGHT eller LEFT) eller BEGGE tabellene (FULL) SKAL være oppført.
Note that `OUTER JOIN` is a loosened form of `INNER JOIN`.
Det er basert på de to betingelsene:
JOIN
er laget på alle kolonnene med samme navn for likhet.Dette ser ut til å være mer av teoretisk karakter, og som et resultat (sannsynligvis) de fleste DBMS-er ikke engang gidder å støtte dette.
Det er det kartesiske produktet av de to involverte tabellene. Resultatet av en CROSS JOIN
vil ikke gi mening i de fleste situasjoner.
i de fleste situasjoner. Dessuten trenger vi ikke dette i det hele tatt (eller trenger minst, for å være presis).
Det er ikke en annen form for JOIN
, snarere er det en JOIN
(INNER
, OUTER
osv.) av en tabell til seg selv.
Avhengig av operatoren som brukes for en JOIN
-klausul, kan det være to typer JOIN
er. Disse er
Equi JOIN
Theta JOIN
For hvilken som helst JOIN
-type (INNER
, OUTER
osv.), hvis vi KUN bruker likhetsoperatoren (=), sier vi at
JOIN
er en EQUI JOIN
.
Dette er det samme som EQUI JOIN
, men det tillater alle andre operatorer som >, <, >= osv.
Mange anser både
EQUI JOIN
og ThetaJOIN
som likINNER
,OUTER
, > etcJOIN
. etcJOIN
. Men jeg tror sterkt at det er en feil og gjør det ideer vage. FordiINNER JOIN
,OUTER JOIN
etc er alle forbundet med tabellene og deres data, mensEQUI JOIN
ogTHETA JOIN
er kun forbundet med operatørene vi bruker i førstnevnte.Igjen, det er mange som anser
NATURAL JOIN
som en slags "merkelig "EQUI JOIN
. Det er faktisk sant, på grunn av den første betingelse jeg nevnte forNATURAL JOIN
. Imidlertid trenger vi ikke' ikke å begrense det bare tilNATURAL JOIN
alene.INNER JOIN
,OUTER JOIN
, osv. etc kan også være enEQUI JOIN
.
Definisjon:
JOINS er en måte å søke på data som kombineres fra flere tabeller samtidig.
Når det gjelder RDBMS er det 5 typer sammenføyninger:
Equi-Join: Kombinerer vanlige poster fra to tabeller basert på likhetstilstand. Teknisk sett gjøres Join ved å bruke likhetsoperatoren (=) for å sammenligne verdiene til primærnøkkelen i en tabell og fremmednøkkelverdiene i en annen tabell, og dermed inkluderer resultatsettet felles (matchede) poster fra begge tabellene. For implementering, se INNER-JOIN.
Natural-Join: Dette er en forbedret versjon av Equi-Join, der SELECT operasjonen utelater dupliserte kolonner. For implementering, se INNER-JOIN.
Non-Equi-Join: Det motsatte av Equi-join der sammenføyningsbetingelsen er andre operatorer enn equal operator(=), f.eks. !=, <=, >=, >, < eller BETWEEN osv. For implementering, se INNER-JOIN.
Self-Join:: En tilpasset oppførsel av sammenføyning der en tabell kombineres med seg selv; Dette er vanligvis nødvendig for spørring av selvrefererende tabeller (eller Unary-relasjonsenhet). For implementering, se INNER-JOINs.
Kartesisk produkt:** Det krysskobler alle postene i begge tabellene uten noen betingelse. Teknisk sett returnerer den resultatsettet av en spørring uten WHERE-klausul.
I henhold til SQL-bekymring og fremgang er det tre typer sammenføyninger, og alle RDBMS-sammenføyninger kan oppnås ved hjelp av disse typer sammenføyninger.
INNER-JOIN: Den fusjonerer (eller kombinerer) matchede rader fra to tabeller. Matchingen gjøres basert på vanlige kolonner i tabeller og deres sammenligningsoperasjon. Hvis likhetsbasert tilstand da: EQUI-JOIN utført, ellers Non-EQUI-Join.
OUTER-JOIN: Den slår sammen (eller kombinerer) matchede rader fra to tabeller og umatchede rader med NULL-verdier. Kan imidlertid tilpasse valg av umatchede rader, f.eks. velge umatchet rad fra første tabell eller andre tabell etter undertyper: LEFT OUTER JOIN og RIGHT OUTER JOIN.
2.1. LEFT Outer JOIN (også kjent som LEFT-JOIN): Returnerer bare matchede rader fra to tabeller og umatchede fra LEFT-tabellen (dvs. den første tabellen).
2.2. RIGHT Outer JOIN (også kjent som RIGHT-JOIN): Returnerer bare matchede rader fra to tabeller og umatchede fra HØYRE tabell.
2.3. FULL OUTER JOIN (også kjent som OUTER JOIN): Returnerer matchede og umatchede fra begge tabeller.
CROSS-JOIN: Denne koblingen slår ikke sammen/kombinerer, men utfører i stedet kartesisk produkt.
skriv inn bildebeskrivelse her]. Merk: Self-JOIN kan oppnås ved enten INNER-JOIN, OUTER-JOIN og CROSS-JOIN basert på krav, men tabellen må sammenføyes med seg selv.
For mer informasjon: For mer informasjon: **[For mer informasjon:][3
1.1: INNER-JOIN: Equi-join-implementering.
SELECT *
FROM Table1 A
INNER JOIN Table2 B ON A.<Primary-Key> =B.<Foreign-Key>;
1.2: INNER-JOIN: Implementering av Natural-JOIN **1.3: INNER-JOIN: Implementering av Natural-JOIN
Select A.*, B.Col1, B.Col2 --But no B.ForeignKeyColumn in Select
FROM Table1 A
INNER JOIN Table2 B On A.Pk = B.Fk;
1.3: INNER-JOIN med NON-Equi-join-implementering**.
Select *
FROM Table1 A INNER JOIN Table2 B On A.Pk <= B.Fk;
1.4: INNER-JOIN med SELF-JOIN **1.4.
Select *
FROM Table1 A1 INNER JOIN Table1 A2 On A1.Pk = A2.Fk;
2.1: OUTER JOIN (full ytre sammenføyning) **.
Select *
FROM Table1 A FULL OUTER JOIN Table2 B On A.Pk = B.Fk;
2.2: LEFT JOIN (VENSTRE SAMMENFØYNING)
Select *
FROM Table1 A LEFT OUTER JOIN Table2 B On A.Pk = B.Fk;
2.3: RIGHT JOIN
Select *
FROM Table1 A RIGHT OUTER JOIN Table2 B On A.Pk = B.Fk;
3.1: CROSS JOIN
Select *
FROM TableA CROSS JOIN TableB;
3.2: CROSS JOIN-Self JOIN
Select *
FROM Table1 A1 CROSS JOIN Table1 A2;
//OR//
Select *
FROM Table1 A1,Table1 A2;