Hulp bij uitleg join's SQL

Status
Niet open voor verdere reacties.

djvibri

Nieuwe gebruiker
Lid geworden
24 okt 2007
Berichten
4
hey iedereen,

ik ben begonnen met een cursus SQL in avondschool. De eerste 4 lessen verliepen vrij vlot en eenvoudig maar nu zie ik door de bomen het bos niet meer. De leerkracht is begonnen met uitleggen over: Equi-joins, non-egui-joins, Self-joins e.d.

Hij heeft het mij al ettelijke malen proberen uit te leggen en wanneer hij het uitleg klinkt het logisch maar wanneer ik de oefening achteraf nogmaals probeer te doen lukt het mij niet en dit werkt vrij teleurstellend :(

nu vroeg ik mij af of er iemand was die een simpele :rolleyes: - duidelijke uitleg kan geven over de logica te zoeken achter deze join's. Ook hoe je weet wanneer je welke moet gebruiken en hoe je hier het beste kan aan beginnen... zoveel mogelijk info is altijd welkom!!

Groeten,

Dj vibri
 
Equi joins?? BS...

Anyhow... Self join is een join met jezelf, of te wel je queried dezelfde tabel 2 maal in 1 query

Equi join => Inner join => Join
Een join waarbij je gegevens moet hebben uit allebij de tabellen

Non-Equi join => Left/Right join => Outer join
Een join waarbij je gegevens uit 1 tabel leidend laat zijn en gegevens haalt uit de tweede tabel als er informatie is.

Neem 2 tabellen
X:
1
3
5
7
9

Y:
1
2
3
4
5

De getallen zijn de Primary/foreign Keys
Bij een normale (equi) join tussen deze twee tabellen levert dit op:
Select *
from X
join Y on PK = FK
1 1
3 3
5 5
Deze komen immers in beide tabellen voor

Bij een non-Equi join (left join) krijg je
Select *
from X
left Join Y on PK = FK
1 1
3 3
5 5
7
9
Bij 1,3 en 5 zie je de informatie uit Y maar bij 7 en 9 niet, die bestaan niet

En bij een right join dus net andersom !

Wanneer je wat gebruikt, dat is moeilijk te zeggen je moet een beetje begrijpen wat er precies kan en wat de vraag precies is.

Ik hoop dat je hiermee een beetje verder bent geholpen, maar blijf vooral vragen!

SucZeven met je Cursus
 
Self join is een join met jezelf, of te wel je queried dezelfde tabel 2 maal in 1 query

:eek: zo een geweldige uitleg over de verschillende joins!!! :thumb: Nu snap ik het al een pak beter die f*cking joins :)

alleen self join snap ik nog niet zo goed, al verschillende bronnen geraadpleegd op internet maar tevergeefs, mijn koppie is daar denk ik te klein voor :confused:

groeten,

Dj vibri
 
Een self join is een zelf join, een join met jezelf.

voorbeeld:
Persooneels tabel, deze bevat alle personeels leden EN van de personeelsleden wie zijn manager is

Tabel:
1 Pietje
2 Jan 1
3 Esther 1
4 Johan 2
5 Pascal 2
Kolommen zijn PK, Naam, Manager (Foreign key)

Door nu te querien
Select p.naam PersoneelNaam, M.Naam Manager
From Personeel P
Left join Personeel M on P.Manager = m.PK
Krijg je deze lijst:
Pietje
Jan Pietje
Ester Pietje
Johan Jan
Pascal Jan

Waaruit je dus kan afleiden dat Pietje de directeur is, etc etc.

Je gebruikt dus een tabel 2 maal om met zichzelf te joinen, dit komt nog vaker voor dan je zomaar zou verwachten .... Alhoewel dit voorbeeld niet echt een goed voorbeeld is.
 
Select p.naam PersoneelNaam, M.Naam Manager
From Personeel P
Left join Personeel M on P.Manager = m.PK

thxn voor het voorbeeldje en de logica er achter snap ik, allez toch wat de uitkomst zou moeten worden e.d. maar de querie...

Vanwaar haal je ineens P.naam & M.naam ? en dus ook Personeel P & Personeel M...
 
Jullie hebben het nog niet gehad over Alias ??

Hmz,

Door de P erachter te zetten maak ik een Alias, een alternatieve meestal korte naam in de query aan waardoor ik eigenlijk 2 tabellen creeer....

Personeel is de naam van de tabel die je (2 maal) gebruikt

Door er P of M achter te zetten creeer je als het ware een korte naam, door dan P.Naam op te roepen weet de query waar hij de "Naam" vandaan moet halen...
 
Laatst bewerkt:
thxn voor het voorbeeldje en de logica er achter snap ik, allez toch wat de uitkomst zou moeten worden e.d. maar de querie...

Vanwaar haal je ineens P.naam & M.naam ? en dus ook Personeel P & Personeel M...

Om onderscheid te maken tussen de gebruikte tabellen, wordt er vaak gebruik gemaakt van zogeheten "aliassen". In dit voorbeeld zijn dus P en M een alias voor een tabel (tabel Personeel in dit geval).

Met zo'n alias kan je makkelijk kijken wat uit welke tabel geselecteerd wordt én je kan, wanneer er tabellen zijn met dezelfde velden, aangeven uit welke tabel het ene veld geselecteerd moet worden.

Bijvoorbeeld tabel student en tabel docent hebben beide het veld "naam". Als je deze zou joinen, zou MySQL niet weten uit welke tabel het veld 'naam' moet komen.
 
@ namliam & aaajeetee :

thxn voor de snelle reacties en de goede uitleg. Ik begin het iets beter te begrijpen nu, wel denk ik dat ik vooral nog veel oefeningen zal moeten maken alvorens het kinderspel wordt. Ik vind het best raar dat je eerst zegt welke velden hij uit de 'alias' tabel moet halen en dan pas een alias tabel aanmaakt... maar ja, er zijn zoveel ICT zaken die niet echt logisch klinken maar dan weer wel een logische verklaring hebben :)

nogmaals: BEDANKT en als ik nog eens ergens vast zit, ik ken het forum nu :) THXN

groeten,

Dj vibri
 
De syntax voor SQL is nou eenmaal
Select
From
Where
Group by
Having

Ik ben het echter met je eens, je kan het raar vinden dat de select niet onderaan staat. Tenslotte moet de query toch eerst data ophalen die aan bepaalde criteria voldoet (from ... where....) en dan de kolomen weergeven (select)

Sommige dingen kan je nou eenmaal niet zelf bepalen en moet je nemen zoals het is.

SucZeven!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan