Avatar billede hatting Nybegynder
15. september 2011 - 10:28 Der er 3 kommentarer og
1 løsning

sql sætning søge i både range og IN

Jeg har en tabel hvor jeg gerne vil søge postnumre, i databasen er de listet som `zipcodes`, data'en kunne være "4000-5000,5500,6000,7000". Så her skal den både søge i range mellem 4000-5000 og IN(5500,6000,7000).

SELECT `zipcodes` FROM `table` WHERE `zipcodes` ????


Er det muligt at lave en SQL sætning der finder frem til dette?
Vil helst undgå at skulle hive alle ud i et script for at sortere dem.
15. september 2011 - 11:03 #1
SELECT `zipcodes` FROM `table` WHERE `zipcodes` BETWEEN 4000 AND 5000 OR `zipcodes` IN (5500, 6000,7000);
Avatar billede hatting Nybegynder
15. september 2011 - 11:40 #2
Det var umiddelbart også min første løsning, men BETWEEN skulle egentlig være omvendt, altså f.eks. input kunne være 4200 så skal den søge i det interval som er inde i databasen..

Jeg er kommet frem til det nemmeste nok vil være at sørge for at få intervalet delt op, så jeg hiver alle post numre ud og sætter ind sammen med de alene satte..

Så alle post numre i intervallet 4000-5000 bliver hentet ud af en anden tabel, og sat op ved siden af 5500,6000,7000:
4000,4200..osv.,5500,6000,7000

også kan man altid bruge IN..
15. september 2011 - 12:35 #3
Jamen til lykke med at du har fundet en løsning på dit problem (uanset at jeg åbenbart ikke ud fra din beskrivelse forstod og stadig ikke forstår hvad problemet er.)
Avatar billede hatting Nybegynder
15. september 2011 - 16:05 #4
Problemet er at det står sådan her i kolonnen: "4000-5000,5500,6000,7000" og man skal søge udfra 1 postnr. f.eks. 4200

Derfor kan BETWEEN ikke bruges. Løsningen er at sørge for alle post numre er opdelt efter komma, og at ingen intervaller skrives ud ;)

Så kan funktionen FIND_IN_SET() bruges.

"SELECT `zipcodes` FROM `table` WHERE FIND_IN_SET('4200',`zipcodes`)";


Så endeligt, svaret på mit spørgsmål: nej man kan ikke søge på intervaller samtidig med en liste delt med kommaer..

Håber det er mere forståligt, hvis andre skulle støde på samme problem :)
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
Kurser inden for grundlæggende programmering

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