Hallo allemaal,
Mijn SQL-probleem gaat over een afstandstabel. De tabel wordt zeer groot en beslaat enkele gigabytes. Ik heb de keuze om de tabel met een grote redundantie te bouwen, en dan komt bijvoorbeeld zowel de tuple "van A naar B" voor als "van B naar A". Dit komt de snelheid ten goede. Als ik echter (zeer veel) ruimte wil besparen, dan sla ik geen dubbele informatie op. Echter dan doet zich hetvolgende probleem voor:-
Beschouw de fictieve tabel “km_distances”:
To, From, km
--------------
A,B,1
A,C,2
A,D,3
A,E,4
A,F,5
G,A,2
H,A,3
I,A,4
J,A,5
C,A,2
B,K,3
C,X,8
Nu wil ik een overzicht van alle plaatsen binnen een straal van 4 km van 'A'. De vraag is nu: kan dit in 1 query zodat ik 1 resultaat set krijg? Ik zou namelijk het liefst willen voorkomen dat ik een tussenstap met een array in PHP moet gaan maken (gezien de grote omvang van de db).
Twee queries zou simpel zijn:
1. Select `From` from `km_distances` WHERE `To` = ‘A’ AND `km` <= 4;
2. Select `To` from `km_distances` WHERE `From` = ‘A’ AND `km` <= 4;
Dit levert op: 1 { B, C, D, E } en 2 { G, H, I, C }
Maar de vraag is dus, kan ik een enkel resultaat krijgen als: 3 { B, C, D, E, G, H, I }
Bij voorbaat dank. Overigens elk advies of ingeving m.b.t. de afstandenmatrix is welkom, dit lijkt me een vrij klassiek probleem.
Mijn SQL-probleem gaat over een afstandstabel. De tabel wordt zeer groot en beslaat enkele gigabytes. Ik heb de keuze om de tabel met een grote redundantie te bouwen, en dan komt bijvoorbeeld zowel de tuple "van A naar B" voor als "van B naar A". Dit komt de snelheid ten goede. Als ik echter (zeer veel) ruimte wil besparen, dan sla ik geen dubbele informatie op. Echter dan doet zich hetvolgende probleem voor:-
Beschouw de fictieve tabel “km_distances”:
To, From, km
--------------
A,B,1
A,C,2
A,D,3
A,E,4
A,F,5
G,A,2
H,A,3
I,A,4
J,A,5
C,A,2
B,K,3
C,X,8
Nu wil ik een overzicht van alle plaatsen binnen een straal van 4 km van 'A'. De vraag is nu: kan dit in 1 query zodat ik 1 resultaat set krijg? Ik zou namelijk het liefst willen voorkomen dat ik een tussenstap met een array in PHP moet gaan maken (gezien de grote omvang van de db).
Twee queries zou simpel zijn:
1. Select `From` from `km_distances` WHERE `To` = ‘A’ AND `km` <= 4;
2. Select `To` from `km_distances` WHERE `From` = ‘A’ AND `km` <= 4;
Dit levert op: 1 { B, C, D, E } en 2 { G, H, I, C }
Maar de vraag is dus, kan ik een enkel resultaat krijgen als: 3 { B, C, D, E, G, H, I }
Bij voorbaat dank. Overigens elk advies of ingeving m.b.t. de afstandenmatrix is welkom, dit lijkt me een vrij klassiek probleem.