Archief - MYSQL: LEFT JOIN and RIGHT JOIN

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Baggel

Legacy Member
wat houd dit in ik heb dit al veer gezien in script maar zie hier niks in
kan iemand mij hier wat uitleg over geven ?

[BAT] Hydra

Legacy Member
Een normale join verenigt 2 lijsten van rijen met elkaar op basis van een vergelijkbaar attribuut. Ik zal dit de linkerijen en de rechterrijen noemen. Er wordt een cartesisch product van de linker met de rechterrijen gemaakt als tussenresultaat. Daarna wordt dit tussenresultaat uitgedund. Enkel als een linker en een rechter-rij hetzelfde attribuut hebben waarop vergeleken wordt, wordt de desbetreffende rij van het tussenresultaat opgenomen in het eindresultaat.

Code:
[i]personen[/i]
id naam
[COLOR="DarkOrange"]1  Guido
2  Marian
3  Danny
4  Luc
5  Steven[/COLOR]
 
[i]functies[/i]
pid omschrijving
[COLOR="LemonChiffon"]1   Directeur
2   Werknemer
4   Interim[/COLOR]

SELECT * 
FROM   ([COLOR="DarkOrange"]personen[/COLOR] JOIN [COLOR="LemonChiffon"]functies[/COLOR] ON id=pid)

[COLOR="DarkOrange"]lijst linkerrijen[/COLOR] / [COLOR="LemonChiffon"]lijst rechterrijen[/COLOR]

geeft

[COLOR="DarkOrange"]1 Guido[/COLOR]  [COLOR="LemonChiffon"]1 Directeur[/COLOR]
[COLOR="darkorange"]2 Marian[/COLOR] [COLOR="LemonChiffon"]2 Werknemer[/COLOR]
[COLOR="darkorange"]4 Luc[/COLOR]    [COLOR="LemonChiffon"]3 Interim[/COLOR]

Een linkerjoin neemt alle linkerrijen zoiezo op in het eindresultaat. Als het vergelijkbaar attribuut in de linkerrij gelijk is aan dat in de rechterrij, wordt deze rij uit het tussenresultaat op de klassieke manier in het eindresultaat opgenomen. Als een linkerrij nooit opgenomen wordt op voorgaande manier in het eindresultaat, worden er achter de linkerrij zoveel nullwaarden geplakt als de rechterrij atrributen heeft, en wordt deze 'samengeplakte' rij toch nog opgenomen in het eindresultaat.

Code:
[i]personen[/i]
id naam
[COLOR="DarkOrange"]1  Guido
2  Marian
3  Danny
4  Luc
5  Steven[/COLOR]

[i]functies[/i]
pid functie
[COLOR="LemonChiffon"]1   Directeur
2   Werknemer
4   Interim[/COLOR]

SELECT * 
FROM   ([COLOR="DarkOrange"]personen[/COLOR] LEFT JOIN [COLOR="LemonChiffon"]functies[/COLOR] ON id=pid)

[COLOR="DarkOrange"]lijst linkerrijen[/COLOR] / [COLOR="LemonChiffon"]lijst rechterrijen[/COLOR]

geeft

[COLOR="DarkOrange"]1 Guido[/COLOR]  [COLOR="LemonChiffon"]1    Directeur[/COLOR]
[COLOR="darkorange"]2 Marian[/COLOR] [COLOR="LemonChiffon"]2    Werknemer[/COLOR]
[COLOR="darkorange"]3 Danny[/COLOR]  [COLOR="LemonChiffon"]NULL NULL[/COLOR]      <-- rij die nooit in eindresultaat v. klassieke 
                        join voorkomt, maar nu toch voorkomt omdat
                        alle linkerrijen moeten opgenomen worden
                        in het eindresultaat
[COLOR="darkorange"]4 Luc[/COLOR]    [COLOR="LemonChiffon"]4    Interim[/COLOR]
[COLOR="darkorange"]5 Steven[/COLOR] [COLOR="LemonChiffon"]NULL NULL[/COLOR]      <-- rij die nooit in eindresultaat v. klassieke 
                        join voorkomt, maar nu toch voorkomt omdat
                        alle linkerrijen moeten opgenomen worden
                        in het eindresultaat

Een rechterjoin is volledig analoog.

Baggel

Legacy Member
Hydra merci voor de uitleg ;)
obliv ook mercie ma ik vind op een manier W3S een beetje onoverzichtelijk :)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan