SQL Join

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PH Piet

PH Piet

21/02/2012 23:31:35
Quote Anchor link
Ik zit in de knoop met de SQL functie JOIN.

Ik heb 3 tabellen:
gebruikers (gebruikersid, gebruikersnaam, woonplaats,...)
kalender (kalenderid, gebruikersid,...)
verzoeken (verzoekid, kalenderid, gebruikersid, zichtbaar,...)

Wat probeer ik te bereiken?
Een gebruiker zet iets op een kalender. Andere gebruikers kunnen een verzoek sturen (INSERT + zichtbaar = 1) of terug annuleren (UPDATE zichtbaar = 0). Ik probeer nu een "lijst" te maken zodat een gebruiker kan zien welke gebruikers een verzoek hebben gestuurd. Dus: ik ben gebruiker 1... En gebruiker 2 & 3 hebben een verzoek gestuurd voor activiteit 6 (kalenderid = 6) en ik wil graag hun gebruikersnaam | woonplaats zien (alleen van activiteit 6).

Hopelijk is het een beetje duidelijk. Ik ben enkel opzoek naar de SQL verder weet ik hoe ik alles eruit haal :)
 
PHP hulp

PHP hulp

22/12/2024 21:13:31
 
John D

John D

21/02/2012 23:36:25
Quote Anchor link
select gebruikersnaam, woonplaats
from gebruikers a, kalender b, verzoeken c
where a.gebruikersid=b.gebruikersid
and a.gebruikersid=c.gebruikersid
and b.kalenderid=6
and c.activiteit=6
 
PH Piet

PH Piet

22/02/2012 00:09:39
Quote Anchor link
Zo easy soms dat je een moeilijke weg zoekt.
Bedankt!
Gewijzigd op 22/02/2012 00:09:53 door PH Piet
 
Erwin H

Erwin H

22/02/2012 09:18:47
Quote Anchor link
Een andere manier (wat mij betreft beter, maar dat moet ieder maar voor zich uitvechten) is om expliciete joins te gebruiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT c.gebruikersnaam, c.woonplaats, etc, etc
FROM kalender a
INNER JOIN verzoeken b ON a.kalenderid = b.kalenderid
LEFT JOIN gebruikers c ON a.gebruikersid = c.gebruikersid
WHERE b.kalenderid = 6

Het voordeel is dat je meer controle hebt over hoe joins gemaakt worden. Zie bijvoorbeeld dat ik zowel een INNER JOIN als een LEFT JOIN heb gebruikt. Bij een INNER JOIN worden alleen rijen geselecteerd die in beide tabellen een waarde hebben staan, terwijl bij een LEFT JOIN alle rijen in de rechter tabel (de eerste, in dit geval kalender) geselecteerd worden en als er geen rij bestaat in de linker tabel (gebruikers in dit geval) dan levert het allemaal NULL waardes op. Zo kan je dus bijvoorbeeld door middel van het JOIN type bepalen of je rijen in de kalender wil selecteren waarvoor geen verzoek aanwezig is.
Andere voordelen zijn dat je WHERE statement veel overzichtelijker wordt omdat je de join voorwaarden er niet meer in hebt staan en, zo schijnt, het is ook sneller...
 



Overzicht Reageren

 
 

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.