postcode (uit view) matchen op t/m reeks (uit tabel)

Status
Niet open voor verdere reacties.

Wolte

Gebruiker
Lid geworden
28 mrt 2014
Berichten
7
Hoi,

Ik heb een lijst met gebruikers en bijbehorende postcodes. Nu wil ik van die gebruikers weten in welk stadsdeel (amsterdam) zij wonen.
IK heb een tabel met daarin de verschillende stadsdelen inclusief postcodegroepen:

Stadsdeel | van | t/m
Zuid | 1058GH | 1058GJ
Oost | 1058GL | 1058GN
West | 1058HD | 1058LT


Nu kom ik er alleen maar niet achter hoe ik mijn query zo opbouw dat wanneer ik postcode 1058GM heb hij deze matched op Oost.
Kan ik dit in mijn qry oplossen of moet ik mijn tabel met postcode reeks zo uitbreiden dat het alle mogelijke postcodecombinaties bevat?

Veel dank alvast aan wie kan helpen!
 
Als je een Cartesisch Product van je query maakt is het vrij simpel. De tabel met Postcodes wordt daarbij niet gekoppeld aan de gegevenstabel, en met criteria bepaal je dan waarbij het adres valt.
 
Maar .. als ik er een Cartesische product van maak, gaat mijn query dan niet alles met alles koppelen? Of kan ik dat ondervangen met de criteria die ik opgeef?
 
Dat laatste is inderdaad het geval. Zonder criteria maakt een Cartesisch product van elk record uit tabel1 een match met elk record uit tabel2. Dus als er 25 records staan in tabel1 en 100 in tabel2, dan krijg je 25 * 100 =2500 records. Maar door te filteren beperk je de lijst tot die waarden die je wilt zien.
 
Ik kom er met mijn basiskennis toch niet uit, met mijn boek met 'uitgebreide' uitleg over queries ook niet :-(



Hoe formuleer ik een voorwaarde waarbij hij het stadsdeel vult met de corresponderende waarde van : enerzijds de waarde van de postcode (in de contactentabel) groter of gelijk is dan de "vanaf postcode" (in regio tabel) en kleiner of gelijk is dan "tot en met postcode".
Dit doe ik wel in een Query toch?
 
Je doet het inderdaad in de query. Ik zou zeggen: maak een klein voorbeeldje, dat werkt makkelijker.
 
Bekijk bijlage Oefening postcodes1.zip

Een minimaal voorbeeldje.

Er zijn 3 tabellen
- Schoolgegevens (school + postcode school)
- Contactgegevens (naam + postcode + school)
- Stadsdelen (naam stadsdeel + begin postcode + eind postcode)

Uitkomst moet zijn:

Naam + postcode + stadsdeel + school + stadsdeel school

(en uiteindelijk: rapport met per stadsdeel het aantal kinderen per jaar + per school het aantal kinderen per jaar)
 
Je bent een heel eind (je hebt het Cartesisch Product) alleen de filtering ontbreekt nog.
Code:
SELECT Contacten.Naam, Contacten.[Naam school], Contacten.[Postcode kandidaat], Stadsdelen.Stadsdeel
FROM Contacten, Stadsdelen
WHERE (((Stadsdelen.[Van postcode])<=[Postcode kandidaat]) AND ((Stadsdelen.[t/m postcode])>=[Postcode kandidaat]))
ORDER BY Contacten.Naam, Stadsdelen.[Van postcode];
 
Wow, thanks a lot!
Het lijkt zo simpel.

Weet je of je twee Cartesische producten kan gebruiken in 1 query? Of is dat onmogelijk?
 
Moet volgens mij wel kunnen. Kwestie van extra tabel erbij, en extra criteria. Meer is het namelijk niet.
 
Dat dacht ik ook, toch blijf ik vastlopen. Moet ik de criteria op een lagere regel zetten? (ik werk niet in de SQL omgeving, ben meer van de drag en drop).
Ik zal morgen even een voorbeeldje plaatsen waar het misgaat.
(toch jammer dat access en de mac niet goed samengaan).
 
Dag OctaFish,
Ik heb het toch opgelost door er twee losse query's van te maken (kwam mij in het geheel toch beter uit). (Uiteindelijk 4 op elkaar, kan dat kwaad?)

Loop alleen nog hier tegenaan:
Is er een slimme manier om in query met Cartesische product te zorgen dat lege cellen niet wegvallen?

tabel 1:
A | 1
B | 2
C | [leeg]
D | 4

Tabel 2:
1 | 8A
2 | 9G
3 | 10L
4 | 3P

En nu wil ik dat hij in een query al mijn "tabel 1" regels meeneemt. Maar dit kan ik niet regelen zoals bij een 'reguliere' join. Hoe los ik dit dan nu op? Want regel C valt weg omdat daar geen waarde in staat die hij aan tabel 2 kan koppelen.

Dank!
 
Je kunt er OR is Null achter plakken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan