Avatar billede 3z Nybegynder
04. april 2005 - 08:47 Der er 8 kommentarer og
1 løsning

WHERE betingelse fejler

Hej,

I min Access database har jeg en tabel med nogle forretninger, som hver især har 2 felter med postnumre - levering fra postnr til postnr.

Nu vil jeg så hente alle dem ud, hvor enten FRA-postnummeret eller TIL-postnummeret ligger inden for en given værdi:

SQL = "Select distinct Byen from tblStore where (leveringfra > '999' and leveringfra < '2000') or (leveringtil > '999' and leveringtil < '2000')"

Desværre kan den med ovenstående kun finde ud af at se på "leveringtil" værdien - hvad gør jeg forkert ???
Avatar billede busschou Praktikant
04. april 2005 - 08:58 #1
skal der være ' omkring når det er tal`?
prøv evt
SQL = "Select distinct Byen from tblStore where (leveringfra > 999 and leveringfra < 2000) or (leveringtil > 999 and leveringtil < 2000)"
Avatar billede busschou Praktikant
04. april 2005 - 09:00 #2
får du nogen fejl`?
Avatar billede 3z Nybegynder
04. april 2005 - 09:32 #3
Det er et tekstfelt i databasen, så ja der skal være ' omkring...

SQL'en fejler egentlig ikke, men den finder kun værdier udfra den sidste del af betingelsen (efter OR). Hvis en forretning har 1000 i feltet "leveringfra" og 4000 i feltet "leveringtil", bliver den ikke taget med i ovenstående SQL fordi "leveringtil" ligger udenfor intervallet ??? Den burde jo blive taget med da "leveringfra" ligger indenfor...
Avatar billede sitemaster Nybegynder
04. april 2005 - 10:29 #4
prøv denne sql
tror faktisk den fejler for dig fordi den bliver forvirret over OR i swl strengen, du siger find leveringfra OR leveringtil til den, muligvis den kun tager den sidste fordi den fandt nogen der og vælger så dem, tror det skal være AND hvis du vil have begge med, det er kun min opfattelse af det ikke sikker det er rigtigt men prøv ad :D

SQL = "Select distinct Byen from tblStore where (leveringfra BETWEEN '999', '2000') AND (leveringtil BETWEEN '999', '2000')"
Avatar billede 3z Nybegynder
04. april 2005 - 19:06 #5
sitemaster>> Din SQL er ikke den samme, den vil kun udvælge forretninger hvor BEGGE betingelser er opfyldt...

Det jeg søger er at kunne udvælge data hvor bare een af betingelserne er opfyldt, enten er leveringfra indenfor intervallet eller leveringtil er indenfor intervallet...
Avatar billede busschou Praktikant
04. april 2005 - 19:48 #6
måske
SQL = "SELECT DISTINCT Byen FROM tblStore WHERE (leveringfra BETWEEN '999' AND '2000') OR (leveringtil BETWEEN '999' AND '2000')"
Avatar billede busschou Praktikant
04. april 2005 - 19:49 #7
Men spørgsmål... Hvis leveringfra og levering til er et tekstfelt hvordan virker < og > operatorne så? Kommer bare i tvivl om teksten "4000" er større end teksten "2000"
Avatar billede busschou Praktikant
04. april 2005 - 19:59 #8
Hvis jeg i asp tester følgende:
<%
fra = "1000"
lille = "999"
stor = "2000"
response.write (fra<lille)
response.write (fra>stor)
%>
Så får jeg True og False
dvs 1000<999 ? ikke godt
Mon ikke sql laver den fejl der også fordi den stregn sammenligner?
Så jeg vil foreslå dig at bruge tal i databasen
Avatar billede 3z Nybegynder
04. april 2005 - 21:21 #9
nej da jeg kun havde een betingelse virkede det fint, så det har ikke så meget med tal/tekst at gøre...

Men har fundet ud af, at det slet ikke kan løses på denne måde, så jeg lukker igen og finder på noget andet... du får point for ihærdigheden.
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