SQL - Joins
Inleiding
In deze tut gaan we eens kijken naar 'joins'.
Om te beginnen is het natuurlijk leuk om te weten wat 'joins' nou eigenlijk zijn;
'joins' zijn zoals het woord al zegt 'samenvoegingen', samenvoegingen van tabellen welteverstaan.
We werken met twee tabellen, een tabel 'autos' en een tabel 'coureurs'.
De tabel 'autos' bevat een aantal autos met wat kenmerkjes, merk & type, de autos staan
door het veld 'c_id' aan de tabel 'coureurs' gelinkt is.
De tabel 'coureurs' bevat een aantal coureurs (dûh) die elk een uniek nummer hebben en natuurlijk hun eigen auto.
De tabel bevat als info voornaam & achternaam.
INNER JOIN
De inner join gebruik je als je zeker weet dat er een relatie is tussen de gegevens waarde in de join clausule.
Als resultaat willen we weten welke coureur, welke auto heeft.
2
3
4
5
6
7
> coureurs.achternaam,
> autos.merk,
> autos.type
> FROM coureurs
> INNER JOIN autos
> ON( coureurs.id = autos.c_id );
Geeft als voobeeldresultaat:
Dit kan natuurlijk ook anders op de wijze die hier beschreven staat.
LEFT JOIN
Een left join gebruik je als er niet direct een relatie hoeft te bestaan tussen de tabellen.
Een auto hoeft natuurlijk geen coureur te hebben, als dat het geval is krijgt het betreffende veld de waarde NULL.
We gaan alle autos selecteren, en zoeken daar een evt. coureur bij.
2
3
4
5
6
7
> autos.type,
> coureurs.voornaam,
> coureurs.achternaam
> FROM autos
> LEFT JOIN coureurs
> ON( autos.c_id = coureurs.id );
Voorbeeldresultaat:
RIGHT JOIN
De right join doet zoals je al kan verwachten precies het tegenovergestelde van de left join.
Een coureur, bijvoorbeeld een beginnertje, heeft nog geen auto maar bestaat wel!
2
3
4
5
6
7
> autos.type,
> coureurs.voornaam,
> coureurs.achternaam
> FROM autos
> RIGHT JOIN coureurs
> ON( autos.c_id = coureurs.id );
Voorbeeldresultaat:
Disclaimer
Vraagjes zet je maar bij de reacties, evenals opmerkingen.
En tot slot de exacte tabellen + inhoud:
CREATE TABLE `autos` (
`id` int(1) NOT NULL auto_increment,
`c_id` int(11) NOT NULL default '0',
`merk` varchar(25) NOT NULL default '',
`type` varchar(25) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM;
INSERT INTO `autos` VALUES (1, 1, 'Lotus', 'Elise');
INSERT INTO `autos` VALUES (2, 0, 'Shelby', 'GT 500');
CREATE TABLE `coureurs` (
`id` int(1) NOT NULL auto_increment,
`voornaam` varchar(25) NOT NULL default '',
`achternaam` varchar(25) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=3 ;
INSERT INTO `coureurs` VALUES (1, 'Mitch', 'Vroege');
INSERT INTO `coureurs` VALUES (2, 'Bas', 'Kreleger');