Inleiding

Opmerking:
De gemelde schematische weergaven zoals bij een groot deel van de typen Joins staat aangegeven worden nog aan de tutorial toegevoegd.

Er wordt voor het ontwikkelen op internet steeds meer gebruik gemaakt van een database, waarin de informatie die op je website wordt getoond wordt opgeslagen. Bezoekers van de website merken hier (bij een goede opbouw) verder helemaal niets van en krijgen gewoon een website voorgeschoteld. Wanneer de database verkeerd is opgebouwd, kan het wel zijn dat het systeem nogal traag wordt en dat een bezoeker dit kan merken. (ook bij een niet goede foutafhandeling kan het merkbaar zijn voor de bezoeker) Meestal bestaat een database uit meerdere tabellen waaruit informatie kan worden opgevraagd. Maar hoe doe je dit nu op een handige manier?

Maar wat nou als je een groot systeem hebt gemaakt, hebt genormaliseerd (zie voor de link, de informatie aan het einde van de inleiding) en je dus meerdere tabellen hebt waar je gegevens uit moet halen? Wanneer dit het geval is moet je joins gaan gebruiken. De naam zegt het eigenlijk een beetje: to join Betekend iets als aansluiten, meedoen. Met een JOIN koppel je gegevens uit verschillende tabellen welke aan elkaar gekoppeld zijn ook in de query aan elkaar. Je kan er met een join voor zorgen dat je query gekoppelde gegevens in één keer terug geeft.

Gedurende deze tutorial zal ik een aantal mogelijkheden noemen van het werken met joins in SQL. Aan de hand van die voorbeelden zal het langzaamaan duidelijk worden wat een join nou precies inhoud en op welke verschillende manieren je hem kan gebruiken. In eerste instantie zal ik alle vormen van JOINS doorlopen, met "slechts" 2 tabellen in die JOIN. Ik zal aan het einde nog een voorbeeld geven van een JOIN waarbij je 3 tabellen gebruikt, zodat je kan zien dat het bouwen van een grotere JOIN eigenlijk helemaal niet zo lastig is en je weet hoe je in zo’n situatie de query op moet bouwen.

Door een plaatje in een forumpost van Jan Koehoorn (kan de post niet terugvinden, maar het heeft me wel gestimuleerd deze tutorial op deze manier te herschrijven) zag ik dat je een Join heel mooi kan weergeven met cirkels. Ik zal deze cirkels (elke cirkel stelt een tabel voor) ook steeds gebruiken door de tutorial heen, om zo een schematisch beeld te geven van wat de JOIN uit het voorbeeld doet.

Opmerkingen vooraf
Normaliseer je database
Het is voor het goed functioneren van deze mogelijkheid in SQL heel belangrijk dat je database op een goede manier is opgebouwd. Normalisatie is voor het goed opbouwen van een database een goede methode. Daarom wil ik via hier nog even op deze tutorial wijzen: http://phphulp.nl/php/tutorials/3/150/

Andere mogelijkheden
Met de JOIN kan je de referentiële integriteit van de database gebruiken, om gekoppelde gegevens uit meerdere tabellen op de juiste manier op te halen. Echter is het geen manier om de referentiële integriteit te waarborgen. Hiervoor kan je binnen SQL ook de zogeheten foreign keys aanmaken, om vanuit het SQL systeem te zorgen dat je ook de juiste gegevens in je database hebt.
Sommige providers bieden naast de standaard MySQL ook de mogelijkheid om PostgreSQL (een andere opensource variant) te gebruiken. Hierin zit een optie om sleutelvelden aan te geven en ook waaraan ze worden gekoppeld.
Wil je hier meer over weten kijk dan even bij deze 2 tutorials:
- http://www.phphulp.nl/php/tutorials/3/334/
- http://www.phphulp.nl/php/tutorials/3/371/

Aanleiding:
De aanleiding voor het schrijven van deze tutorial kwam eigenlijk door een vraag van Elsy, waarin een JOIN was gebruikt (de INNER JOIN). De bedoeling van de query was dat deze zowel de Categoriën uit de ene tabel haalde en subcategorieën uit de andere. Nu kreeg ze door het verkeerde type JOIN alleen de categorieën waar wel een subcategorie onder viel.
Toen bedacht ik mij dat het wel heel handig zou zijn als daar een tutorial voor kwam, omdat de JOIN een nette en gemakkelijke manier is om gegevens te halen uit 2 gekoppelde tabellen.
Deze aanleiding was de originele aanleiding (die van de vorige tutorial), de uiteindelijke aanleiding om deze (verbeterde) tutorial te schrijven was een post van Jan Koehoorn, die een afbeelding liet zien van de verschillende Joins. Deze bevatte alle verschillende Joins in schematische weergave, op dezelfde manier als deze door de tutorial gebruikt worden.

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Inleiding
  2. Tabelopbouw
  3. Inner Join
  4. Left Join
  5. Left Join (IS NULL)
  6. Right Join
  7. Right Join (IS NULL)
  8. Outer Join
  9. Outer Join (IS NULL)
  10. Multiple Joins
  11. Tabel met zichzelf Joinen
  12. Tot slot

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.