Voor een niet nader te noemen tool
ben ik op zoek naar antwoorden op de volgende vragen. Voor de urineerders: ik heb gegoogled, gesearched, Books Online omgespit, goed nagedacht, maar kom er 1 2 3 niet uit.
De vragen hebben betrekking op de volgorde van join expressies in SQL. Het onderliggende vraagstuk is nl.: is er een volgorde van join expressies nodig of niet? (dus moet je haakjes plaatsen bij join expressies om een join volgorde te omschrijven of niet?) Alle voorbeelden die ik zelf tot nu toe heb uitgeschreven resulteren in dezelfde rowset, wat eventueel erop duidt dat er geen volgorde gespecificeerd hoeft te worden. Er is een uitzondering: cross joins, vandaar vraag 1
1) Wat is het semantische nut van een CROSS JOIN?
Cross joins joinen alle rows van operand 1 met operand 2, dus row 1 van operand 1 wordt gejoined met alle rows van operand 2 etc. Dit levert op dat bij de crossjoin van 3 of meer objects (views/tables) je een volgorde moet opgeven, omdat dit het eindresultaat beinvloedt. Nu is mijn vraag echter: wat is het nut van CROSS JOINs? Ik gebruik ze zelf NOOIT, en heb toch echt al wat lappen SQL geschreven in mn leven.
2) Is er een join voorbeeld waarbij volgorde van belang is?
Eigenlijk de kern van de zaak: is er een join expressie met 3 of meerdere objects (tables/views) waarin volgorde van essentieel belang is, zodat je haakjes moet plaatsen? Het gaat er om dat het eindresultaat verschilt, als je de haakjes anders plaatst (wat dus duidt op een volgorde) plus dat je de join niet op een andere manier kunt schrijven zodat de volgorde-eis wegvalt. Ik heb zelf het vermoeden van niet, dus dat volgorde niet uitmaakt.
voorbeeld:
A INNER JOIN B ON ... INNER JOIN C ON ... INNER JOIN D ON...
is gelijk aan
(A INNER JOIN B ON ...) INNER JOIN (C INNER JOIN D ON) ON ...
(dit is zo omdat foreign key constraints ervoor zorgen dat er geen 'orphaned FK velden' zijn en dus dat een table het eindresultaat filtert)
maar hoe zit dit met LEFT / RIGHT joins? Iemand een voorbeeld dat volgorde essentieel maakt en dat niet omgeschreven kan worden naar een volgorde-vrij voorbeeld? Alvast bedankt
De vragen hebben betrekking op de volgorde van join expressies in SQL. Het onderliggende vraagstuk is nl.: is er een volgorde van join expressies nodig of niet? (dus moet je haakjes plaatsen bij join expressies om een join volgorde te omschrijven of niet?) Alle voorbeelden die ik zelf tot nu toe heb uitgeschreven resulteren in dezelfde rowset, wat eventueel erop duidt dat er geen volgorde gespecificeerd hoeft te worden. Er is een uitzondering: cross joins, vandaar vraag 1
1) Wat is het semantische nut van een CROSS JOIN?
Cross joins joinen alle rows van operand 1 met operand 2, dus row 1 van operand 1 wordt gejoined met alle rows van operand 2 etc. Dit levert op dat bij de crossjoin van 3 of meer objects (views/tables) je een volgorde moet opgeven, omdat dit het eindresultaat beinvloedt. Nu is mijn vraag echter: wat is het nut van CROSS JOINs? Ik gebruik ze zelf NOOIT, en heb toch echt al wat lappen SQL geschreven in mn leven.
2) Is er een join voorbeeld waarbij volgorde van belang is?
Eigenlijk de kern van de zaak: is er een join expressie met 3 of meerdere objects (tables/views) waarin volgorde van essentieel belang is, zodat je haakjes moet plaatsen? Het gaat er om dat het eindresultaat verschilt, als je de haakjes anders plaatst (wat dus duidt op een volgorde) plus dat je de join niet op een andere manier kunt schrijven zodat de volgorde-eis wegvalt. Ik heb zelf het vermoeden van niet, dus dat volgorde niet uitmaakt.
voorbeeld:
A INNER JOIN B ON ... INNER JOIN C ON ... INNER JOIN D ON...
is gelijk aan
(A INNER JOIN B ON ...) INNER JOIN (C INNER JOIN D ON) ON ...
(dit is zo omdat foreign key constraints ervoor zorgen dat er geen 'orphaned FK velden' zijn en dus dat een table het eindresultaat filtert)
maar hoe zit dit met LEFT / RIGHT joins? Iemand een voorbeeld dat volgorde essentieel maakt en dat niet omgeschreven kan worden naar een volgorde-vrij voorbeeld? Alvast bedankt
Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com