Avatar billede kimlarsen1978 Nybegynder
02. september 2003 - 00:23 Der er 12 kommentarer og
1 løsning

Select LIKE "steng værdi"

Heysa
Hej har et lille problem...
Jeg er ved at lave en søgefuntion, og jeg skal have samlet noget idnumre op fra én tabel og sammenlignet den med en kolonne i en anden tabel. Jeg samler idnumrene op i en streng som jeg så genmmer i en session. Det virker fint hvis min session kun indeholder en streng der er et nummer langt fx:
---------
session("idnumre") = "1"
---------
men er der 2 eller flere så virker det ikke fx:
---------
session("idnumre") = "1 2"
---------

Jeg sammenligner kolonnen i den anden tabel med min session på denne måde:
----------
set rs_vareikategori=db.execute("select * from StockTable where RecID LIKE '%" & session("idnumre") & "%' order by ItemName")
----------
RecID = 1 findes og den "post" finder den også med session("idnumre") = "1" men ikke med session("idnumre") = "1 2"

Er det den forkerte fremgangsmåde eller hvad er der galt?
Avatar billede kimlarsen1978 Nybegynder
02. september 2003 - 00:34 #1
Problemet er vel at jeg samler alle de forskellige idnumre op i en lang sammenhængende steng derfor er RecID LIKE "1" jo ikke sand og RecID LIKE "1 2" jo falsk.

Men hvordan får jeg den så til at tjekke både på  RecID LIKE "1" og RecID LIKE "2" hvis min session er = "1 2"? og hvad nu hvis der er 150 idnumre i den session?

Jeg er lidt i vildrene om den her...
Er det klart hvad problemet er?
Avatar billede kimlarsen1978 Nybegynder
02. september 2003 - 00:38 #2
Jeg skal vel have mn SELECT til at sammenligne med alle værdierne i et array, men hvordan gør jeg det?
Avatar billede netro Nybegynder
02. september 2003 - 00:42 #3
Du skal bruge IN-operatoren til dette formål:

set rs_vareikategori=db.execute("select * from StockTable where RecID IN (" & session("idnumre") & ") order by ItemName")

session("idnumre") skal så have formen "'1', '27', '12'" osv...

Har du ikke mulighed for at joine de to tabeller med hinanden?
Avatar billede netro Nybegynder
02. september 2003 - 00:43 #4
Hvis du søger på f.eks. ID-nummer 1 med LIKE %%, vil du både få returneret 1, 10, 11, 12, 13 mv.
Avatar billede netro Nybegynder
02. september 2003 - 00:47 #5
Prøv lige at vise mig dit statement, der udtrækker ID-numre til din session-variabel. Så kan jeg sikkert give dig en smartere løsning.
Avatar billede kimlarsen1978 Nybegynder
02. september 2003 - 00:50 #6
Okay...
----------
      Do Until rs_beskrivelsen.EOF
        idnummer = "'" & rs_beskrivelsen("NotesRecId") & "' "
        idnumre = idnumre + idnummer
      rs_beskrivelsen.MoveNext
      Loop
session("idnumre") = idnumre
---------
Avatar billede netro Nybegynder
02. september 2003 - 00:53 #7
Nej, din SQL-sætning.
Avatar billede kimlarsen1978 Nybegynder
02. september 2003 - 00:55 #8
Øhhh, har du ikke fået den?
-------------
  set rs_vareikategori=db.execute("select * from StockTable1 where RecID IN (" & session("idnumre") & ") order by ItemName")
-------------
Eller hvad er det du gerne vil have?
Avatar billede kimlarsen1978 Nybegynder
02. september 2003 - 01:01 #9
Det virker nu...
JEg har makket lidt med IN-proceduren og det virker. KAn du evt. send et svar og en hurtig beskrivelse af hvordan IN-proceduren virker?
Avatar billede netro Nybegynder
02. september 2003 - 01:27 #10
Undskyld - jeg misforstod dig.

IN-operatoren undersøger, om en kolonnes værdi er eller ikke er indeholdt i en liste med værdier på formen ('X', 'Y', 'Z'). Du kan således også anvende NOT IN.
Avatar billede kimlarsen1978 Nybegynder
02. september 2003 - 09:37 #11
Jeg takker for din hjælp.
Kan du også på falderebet forklarer hvilken forskel det gør om men bruger % i LIKE eller om man ikke gør. Hvad er fx. forskellen på:

- RecID LIKE %" & variabel & "%
- RecID LIKE " & variabel & "
Avatar billede netro Nybegynder
02. september 2003 - 17:03 #12
Like %X% : Alle felter, hvor X er indeholdt (uanset placering)
Like %X : Alle felter, hvor X er det sidste tegn
Like X% : Alle felter hvor X er det første tegn
Like X : Alle felter, der kun indeholder X (identisk med = X)
Avatar billede kimlarsen1978 Nybegynder
02. september 2003 - 17:50 #13
Du skal have tak :)
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