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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
MYSQL > SELECT coureurs.voornaam,
       > coureurs.achternaam,
       > autos.merk,
       > autos.type
       > FROM coureurs
       > INNER JOIN autos
       > ON( coureurs.id = autos.c_id );


Geeft als voobeeldresultaat:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Mitch - Vroege - Lotus - Elise


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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
MYSQL > SELECT autos.merk,
       > autos.type,
       > coureurs.voornaam,
       > coureurs.achternaam
       > FROM autos
       > LEFT JOIN coureurs
       > ON( autos.c_id = coureurs.id );


Voorbeeldresultaat:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
Lotus - Elise - Mitch - Vroege
Shelby - GT 500 - NULL - NULL


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!

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
MYSQL > SELECT autos.merk,
       > autos.type,
       > coureurs.voornaam,
       > coureurs.achternaam
       > FROM autos
       > RIGHT JOIN coureurs
       > ON( autos.c_id = coureurs.id );


Voorbeeldresultaat:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
Lotus - Elise - Mitch - Vroege
NULL - NULL - Bas - Kreleger


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');

« Lees de omschrijving en reacties

Inhoudsopgave

  1. SQL - Joins

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.