Avatar billede horsmark Nybegynder
26. september 2006 - 20:24 Der er 10 kommentarer og
2 løsninger

Find 3 nærmeste postnumre via SQL

Jeg skal finde 3 nærmeste postnumre til et givent postnummer

Det er kort til et fange et match imellem en user og en supplier. Begge har deres egen db med postnummer

user_address_zip = 4750

skal så fange eks.
supplier_address_zip = 4500
supplier_address_zip = 4500
supplier_address_zip = 4800

wodden gør jeg lige det i ét sql ?
Avatar billede coderdk Praktikant
26. september 2006 - 20:33 #1
Måske kan du lade din WHERE indeholde noget i stil med:

supplier_address_zip > user_address_zip - 250 AND supplier_address_zip < user_address_zip + 250

?
Avatar billede coderdk Praktikant
26. september 2006 - 20:34 #2
Evt.

supplier_address_zip BETWEEN user_address_zip - 250 AND user_address_zip + 250
Avatar billede a1a1 Novice
26. september 2006 - 20:41 #3
select postnummer, (select top 1 postnummer from tabel where postnummer>2000) as biggerpostnummer, (select top 1 postnummer from tabel where postnummer<2000) as smallerpostnummer
from tabel where postnummer=2000

burde gøre det....

;o)
Avatar billede kjulius Novice
26. september 2006 - 20:43 #4
Mit forslag ville være:

SELECT user_address_zip, supplier_address_zip
FROM user, supplier
WHERE user_address_zip = 4750
ORDER BY ABS(user_address_zip - supplier_address_zip)
LIMIT 3
Avatar billede a1a1 Novice
26. september 2006 - 20:46 #5
måske jeg har misforstået det?

hvad skulle du bruge det til?, hvis du vil finde "nærmeste" by (postnummer) vil det blive lidt problematisk f.eks har bornholm 3700, men frederikssund 3600

;o)
Avatar billede kjulius Novice
26. september 2006 - 20:47 #6
Eller, hvis du kun ønsker oplysninger fra supplier tabellen:

SELECT *
FROM supplier
ORDER BY (4750 - supplier_address_zip)
LIMIT 3
Avatar billede coderdk Praktikant
26. september 2006 - 20:54 #7
a1, SELECT TOP x virker ikke i mysql, det hedder LIMIT [offset,]<limit>
Avatar billede a1a1 Novice
26. september 2006 - 21:30 #8
;o) det havde jeg glemt, bruger mest mssqlserver
Avatar billede kjulius Novice
26. september 2006 - 21:37 #9
Arrgh... Ser jeg har glemt ABS i den sidste:

SELECT *
FROM supplier
ORDER BY ABS(4750 - supplier_address_zip)
LIMIT 3
Avatar billede horsmark Nybegynder
27. september 2006 - 21:09 #10
super thx for tilbagemeldinger...

vi kender dog godt til de "skævt fordelt" postnumre som bornholm vs. frederikssund men det er heldigvis ikke et problem... *pyh*

kjulius >>
Dit forslag har vi arbejdet videre med og det spiller top efter hensigten, så smid et svar :-)
Avatar billede kjulius Novice
27. september 2006 - 22:54 #11
Det kommer her... :-)
Avatar billede horsmark Nybegynder
28. september 2006 - 06:03 #12
done
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester