Avatar billede luke2009 Nybegynder
21. juli 2009 - 11:59 Der er 16 kommentarer og
1 løsning

sql streng

Hej

Hvorfor virker denne select ikke:

select * from diverse join postnr on devirse.postnr = postnr.postnr where navn like '' or postnr=5700 or bynavn like '' order by navn asc;


Jeg har tre søgefelter hvoraf som minimum et skal være udfyldt. Her er det så postnr og de andre er tomme. Den skal altså bare søge på postnr. Er det ikke en måde at gøre det på?
Avatar billede fant0mas Nybegynder
21. juli 2009 - 12:36 #1
Hint: devirse
Avatar billede luke2009 Nybegynder
21. juli 2009 - 12:45 #2
ok, men virker stadig ikke. der kommer ingen fejl, men der er rækker i tabellen med dette postnr.
Avatar billede fant0mas Nybegynder
21. juli 2009 - 13:03 #3
Og der findes en med postnummer 5700?
Avatar billede luke2009 Nybegynder
21. juli 2009 - 13:32 #4
Nu har jeg lavet den om:

select * from diverse join postnr on diverse.postnr = postnr.postnr where navn like '' or diverse.postnr=5700 or postnr.bynavn like '' order by navn asc;

Her udskriver den alle rækker i databasen.
søger jeg på navn

select * from diverse join postnr on diverse.postnr = postnr.postnr where navn like 'a' or diverse.postnr= or postnr.bynavn like '' order by navn asc;

siger den:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'or postnr . bynavn like '' order by navn asc
LIMIT 0, 30' at line 1

...og ja, der findes flere med 5700.
Avatar billede fant0mas Nybegynder
21. juli 2009 - 14:09 #5
like '%a%'
Avatar billede luke2009 Nybegynder
21. juli 2009 - 14:20 #6
men det gør ingen forskel.
Avatar billede fant0mas Nybegynder
21. juli 2009 - 14:40 #7
Du kan ikke bare skrive diverse.postnr =
Avatar billede luke2009 Nybegynder
21. juli 2009 - 14:54 #8
Det er muligt men den er jo altså tom nogengange.
Avatar billede fant0mas Nybegynder
21. juli 2009 - 15:04 #9
Så bruge LIKE '%%' der også, eller lav en sql streng med nogle if's så den kun indeholder de kolonner du leder i.

Hvilket sprog skriver du?
Avatar billede luke2009 Nybegynder
21. juli 2009 - 15:10 #10
Jeg skriver ASP. men if's er måske en mulighed. Det virker bare så rodet med alle de if-sætninger. Men hvis det er den eneste løsning.....
Avatar billede luke2009 Nybegynder
21. juli 2009 - 19:22 #11
Har nu forsøgt at lave noget selv, men det går da helt galt for databasen

strSQL = "SELECT * "
strSQL = strSQL & "FROM " & tabel
strSQL = strSQL & " join postnr on postnr.postnr"
strSQL = strSQL & " WHERE (1 = 1) "

If Not navn = "" Then
strSQL = strSQL & "AND (navn = '" & navn & "') "
end if

If Not PO = "" Then
strSQL = strSQL & "AND (" & tabel & ".postnr LIKE '%" & PO & "%') "
end if

If Not bynavn = "" Then
strSQL = strSQL & "AND (postnr.bynavn LIKE '%" & bynavn & "%') "
end if

strSQL = strSQL & "ORDER BY navn asc"


indtaster jeg et postnummer udskriver den alle rækker i postnr-tabellen to gange.
Avatar billede fant0mas Nybegynder
21. juli 2009 - 20:10 #12
Grunden til den returnere alle rækker er vel fordi det kune er din WHERE (1 = 1) der er opfyldt.

Første gang i asp, men vi prøver:

strSQL = "SELECT * FROM " & tabel"

If len(trim(po)) Then
strSQL = strSQL & " JOIN postnr ON postnr.postnr"
end if
strSQL = strSQL & " WHERE (1 = 1) "

If len(trim(navn)) Then
strSQL = strSQL & "AND (navn = '" & navn & "') "
end if

If len(trim(po)) Then
strSQL = strSQL & "AND (" postnr.postnr LIKE '%" & PO & "%') "
    If len(trim(bynavn)) Then
    strSQL = strSQL & "AND (postnr.bynavn LIKE '%" & bynavn & "%') "
    end if
end if

strSQL = strSQL & "ORDER BY navn asc"
Avatar billede luke2009 Nybegynder
22. juli 2009 - 23:05 #13
Det så ud som noget jeg kunne lade mig inspirerer af. Jeg fik det eneligt til at virke.
Tak for hjælpen. Læg et svar.
Avatar billede fant0mas Nybegynder
22. juli 2009 - 23:42 #14
Dejligt :D
Ellers tak til points!
Avatar billede luke2009 Nybegynder
23. juli 2009 - 10:08 #15
hvis ikke du vil have dem tager jeg dem selv.
Avatar billede fant0mas Nybegynder
23. juli 2009 - 10:17 #16
DO IT NOW!
Avatar billede luke2009 Nybegynder
23. juli 2009 - 11:46 #17
:)
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