Is JOIN/NATURAL JOIN veilig?
Koen Hollander
26/12/2013 17:46:08Dag PHPHulp,
Ik dacht plots zomaar aan iets... Ik ben een programmatje aan het maken in PHP en daar sla ik veel gebruikersgegevens in op die iets hebben gekocht, nu heb ik ook resellers. Ik sla in een tabel normale gebruikers op en in een tabel sla ik resellers op. Resellers kunnen ook klanten maken en ik sla in tabel nummer 3 het ID van de reseller op en het ID van de klant. Ik wil voor alle veiligheid alles dubbel controleren, dat is de reden dat ik join. Dus is dat dan wel zo veilig?
Ik dacht plots zomaar aan iets... Ik ben een programmatje aan het maken in PHP en daar sla ik veel gebruikersgegevens in op die iets hebben gekocht, nu heb ik ook resellers. Ik sla in een tabel normale gebruikers op en in een tabel sla ik resellers op. Resellers kunnen ook klanten maken en ik sla in tabel nummer 3 het ID van de reseller op en het ID van de klant. Ik wil voor alle veiligheid alles dubbel controleren, dat is de reden dat ik join. Dus is dat dan wel zo veilig?
Gewijzigd op 26/12/2013 17:46:44 door Koen Hollander
PHP hulp
28/11/2024 16:52:15Wouter J
26/12/2013 20:48:53Joinen doe je niet om alles dubbel te doen (sowieso is dubbel controleren al niet goed). Joinen doe je mdat dat moet nadat je normaliseren goed hebt toegepast.
@Koen
Er zitten overigens wel wat haken en ogen aan het gebruik van een natural join.
Dit 'kijkt' welke kolommen in beide tabellen dezelfde naam hebben, en als al die kolommen met dezelfde naam dezelfde waarde hebben wordt aan de join voorwaarde voldaan.
Dus stel tabel_a kolommen klant_id, reseller_id, email; tabel_b reseller_id, email.
Dan zou bovenstaande query resulteren in:
Die laatse join voorwaarde wil je natuurlijk niet.
Er zitten overigens wel wat haken en ogen aan het gebruik van een natural join.
Dit 'kijkt' welke kolommen in beide tabellen dezelfde naam hebben, en als al die kolommen met dezelfde naam dezelfde waarde hebben wordt aan de join voorwaarde voldaan.
Dus stel tabel_a kolommen klant_id, reseller_id, email; tabel_b reseller_id, email.
Dan zou bovenstaande query resulteren in:
Code (php)
1
2
3
2
3
SELECT lijst_met_kolommen FROM tabel_a NATURAL JOIN tabel_b
ON tabel_a.reseller_id = tabel_b.reseller_id
AND tabel_a.email = tabel_b.email
ON tabel_a.reseller_id = tabel_b.reseller_id
AND tabel_a.email = tabel_b.email
Die laatse join voorwaarde wil je natuurlijk niet.
Gewijzigd op 26/12/2013 21:48:55 door Ger van Steenderen