Hoi allen,
Even een MS SQL vraagje. Ik heb een tabel met daarin zogeheten plaats verwijzingen. Deze tabel heeft twee kolommen, te weten search en target.
Doel van deze tabel is als volgt:
Orders worden ingelegd voor plaats A (search) en worden uitgevoerd door onze leden in plaats B (target). Dus bv. orders voor Zoelen, worden uitgevoerd door Tiel. Dit noemen wij de verwijstabel met verwijsplaatsen.
Tabel:
Deze tabel is al heel oud en de data erin is zwaar vervuild. Dit willen we opschonen, echter compleet legen en opnieuw vullen is geen optie i.v.m. de hoeveelheid werk die hierin zit.
Waar bestaat deze vervuiling uit?
In Nederland bestaan er vele plaatsen die in meerdere provincies hetzelfde heten, bijvoorbeeld Oosterhout. Deze plaats ligt in zowel Noord-Brabant (bij Breda) als in Gelderland (boven Nijmegen). Om dit onderscheid te maken hebben ze de tabel ooit gevuld met bijvoorbeeld target Oosterhout (GLD) en Oosterhout (NB).
Nu willen we deze tabel gaan koppelen aan een officiële postcode database en de plaatsen Oosterhout (GLD) en Oosterhout (NB) zijn geen geldige plaatsnamen. Dit is namelijk gewoon Oosterhout. Echter, om nu met de hand al deze records op te gaan zoeken is geen optie. Dus hier heb ik een query voor geschreven, om deze op te zoeken.
En uiteraard ook een soortgelijke query voor de search kolom. Ik moet echter kijken of er al vervangende verwijsplaatsen zijn opgegeven. Dus dat er in plaats van het record:
al een record
...bestaat.
En daar kom ik dus niet uit, want ik heb natuurlijk geen koppeling tussen 'Oosterhout (NBR)' en 'Oosterhout'. Is wat ik wil überhaupt mogelijk? Of wordt dit toch echt handwerk?
Ik zat er anders aan te denken om de records, waarbij de target niet bestaat, stuk voor stuk na te lopen en de bijbehorende waarde van search te query'en en zo te kijken of er al een vervangend record is. Maar dit is dus echt handwerk en heel tijdrovend.
Wie o wie heeft er een idee?
Even een MS SQL vraagje. Ik heb een tabel met daarin zogeheten plaats verwijzingen. Deze tabel heeft twee kolommen, te weten search en target.
Doel van deze tabel is als volgt:
Orders worden ingelegd voor plaats A (search) en worden uitgevoerd door onze leden in plaats B (target). Dus bv. orders voor Zoelen, worden uitgevoerd door Tiel. Dit noemen wij de verwijstabel met verwijsplaatsen.
Tabel:
Search | Target |
Zoelen | Tiel |
Ooij | Beek |
Oosterhout (NBR) | Breda |
Deze tabel is al heel oud en de data erin is zwaar vervuild. Dit willen we opschonen, echter compleet legen en opnieuw vullen is geen optie i.v.m. de hoeveelheid werk die hierin zit.
Waar bestaat deze vervuiling uit?
In Nederland bestaan er vele plaatsen die in meerdere provincies hetzelfde heten, bijvoorbeeld Oosterhout. Deze plaats ligt in zowel Noord-Brabant (bij Breda) als in Gelderland (boven Nijmegen). Om dit onderscheid te maken hebben ze de tabel ooit gevuld met bijvoorbeeld target Oosterhout (GLD) en Oosterhout (NB).
Nu willen we deze tabel gaan koppelen aan een officiële postcode database en de plaatsen Oosterhout (GLD) en Oosterhout (NB) zijn geen geldige plaatsnamen. Dit is namelijk gewoon Oosterhout. Echter, om nu met de hand al deze records op te gaan zoeken is geen optie. Dus hier heb ik een query voor geschreven, om deze op te zoeken.
SQL:
1
2
3
| -- selecteer alle records van place, waarbij de target niet bestaat in de postcode dataset. select * from place where not exists (select plaats from pcstraat where place.[target] = pcstraat.plaats) |
En uiteraard ook een soortgelijke query voor de search kolom. Ik moet echter kijken of er al vervangende verwijsplaatsen zijn opgegeven. Dus dat er in plaats van het record:
Search | Target |
Oosterhout (NBR) | Breda |
al een record
Search | Target |
Oosterhout | Breda |
...bestaat.
En daar kom ik dus niet uit, want ik heb natuurlijk geen koppeling tussen 'Oosterhout (NBR)' en 'Oosterhout'. Is wat ik wil überhaupt mogelijk? Of wordt dit toch echt handwerk?
Ik zat er anders aan te denken om de records, waarbij de target niet bestaat, stuk voor stuk na te lopen en de bijbehorende waarde van search te query'en en zo te kijken of er al een vervangend record is. Maar dit is dus echt handwerk en heel tijdrovend.
Wie o wie heeft er een idee?
[ Voor 0% gewijzigd door PdeBie op 02-12-2014 10:05 . Reden: query aangepast ]