Avatar billede ferdinan Nybegynder
13. februar 2002 - 19:12 Der er 14 kommentarer og
1 løsning

SELECT og IF mod streng

Jeg har en select:

DmainSubjectID=23

SQL = "SELECT * FROM TcomInfoSub WHERE MainSubjectID INDEHOLDER " & DmainSubjectID & " ORDER BY SubjectName "

Kollonen MainSubjectID kan indehold flere tal f.eks. 1, 4, 67, 78

hvordan skal den select så laves?


Det samme spørgsmål er relevant i forhold til en if sætning:

VarinnerSubID="1, 4, 67, 78"

if request("SubID") FINDES I VarinnerSubID then
...
else
...
end if

request("SubID") vil kun indeholde eet tal

Hvordan skal denne if sætning skrives?


ferdinan
Avatar billede tmceu Praktikant
13. februar 2002 - 19:34 #1
SQL = "SELECT * FROM TcomInfoSub WHERE MainSubjectID IN(" & DmainSubjectID & ") ORDER BY SubjectName "

Den sidste kan du erstatte med en Select Case

Select Case Request("SubID")
Case VarinnerSubID
---
Case Else
End Select
Avatar billede ferdinan Nybegynder
13. februar 2002 - 19:48 #2
Til den første er det så ikke den omvendte funktion jeg skal bruge

MainSubjectID indeholder flere tal altså f.eks. 1, 4, 6, 78, 134
DmainSubjectID indeholder kune eet tal
Avatar billede tmceu Praktikant
13. februar 2002 - 20:02 #3
Sorry, havde misforstået spørgsmålet.

SQL = "SELECT * FROM TcomInfoSub WHERE MainSubjectID LIKE '%" & DmainSubjectID & "%' ORDER BY SubjectName "

Så får du bare problemet med eks. 23 vs. eks. 230, der begge vil passe på LIKE '%23%'
Avatar billede ferdinan Nybegynder
13. februar 2002 - 20:09 #4
jah....hvordan kommer jeg om ved det?
Avatar billede tmceu Praktikant
13. februar 2002 - 20:22 #5
Der er ikke rigtig nogen god måde :-(

Hvis du har helt styr på indholdet, kan du kontrollere for komma også, eks. LIKE '%23,%'

Du kan også lave en ekstra kontrol i ASP, eks. ved at anvende SPLIT funktionen. Dette vil returnere et array som du kan løbe igennem.

Ingen af disse er optimale, men de alternativer jeg kan komme i tanke om, er ikke lige til at forklare eller implementere.
Avatar billede ferdinan Nybegynder
13. februar 2002 - 20:35 #6
Det er da stadig omvendt at jeg skal bruge en funktion

SQL = "SELECT * FROM TcomInfoSub WHERE MainSubjectID LIKE '%" & DmainSubjectID & "%' ORDER BY SubjectName "

forudsætter stadig at MainSubjectID kun er et tal som så er LIKE 1, 2, 23, 34
Avatar billede ferdinan Nybegynder
13. februar 2002 - 20:38 #7
Hvis du havde en tabel der indholdte Kategorier og en tabel der indholdte emner.....et emne skal så kunne placeres i flere kategorier....hvordan ville du gøre det. hvis du først kørte en select på Kategorierne og inde i den kørte en select på emnerne som så matche de forskellige kategorier?

Jeg kan simpelthen ikke lige gennemskue det... :(
Avatar billede tmceu Praktikant
13. februar 2002 - 21:00 #8
Jeg ville indskyde en mellemtabel som indeholder relationen mellem kategorier og emner. Eksempelvis som dette:

Kategorier (ID, KategoriNavn)
-----------------------------
1, Kategori 1
2, Kategori 2
3, Kategori 3

Emner (ID, EmneNavn)
--------------------
1, Emne 1
2, Emne 2

KategoriEmner (EmneID, KategoriID)
----------------------------------
1, 1
1, 2
2, 3

Emne 1 vil således være relateret til kategori 1 + 2
Emne 2 vil være relateret til kategori 3

Håber du kan bruge forslaget.
Avatar billede ferdinan Nybegynder
13. februar 2002 - 21:14 #9
ok....det tror jeg at jeg vil gøre:)

Jeg havde håbet på at der var en metode hvor man kunne foretage en "Omvendt" metode i SELECT så jeg kun skulle anvende to tabeller.

et er også fordi at det er en app der eksistere i forvejen, hvor et emne kun kan være i een kategori, og nu skal det kunne være i flere, så var det jo det letteste hvis det kunne lade sig gøre.....
Avatar billede tmceu Praktikant
13. februar 2002 - 21:16 #10
Og du har forresten ret, det er stadig omvendt. Jeg kopierede linien fra tidligere og glemte igen at bytte den rundt :-)
Avatar billede excession Nybegynder
13. februar 2002 - 22:07 #11
tror du kan bruge inStr til at finde til at finde dit tal i en streng..

du kan læse mere om inStr her:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfctInStr.asp


-- xs
Avatar billede excession Nybegynder
13. februar 2002 - 22:27 #12
jeg kan lige prøve at at lave en function til at finde tallet frem..
Avatar billede excession Nybegynder
13. februar 2002 - 22:32 #13
kan tallet komme flere gang i din streng?

-- xs
Avatar billede ferdinan Nybegynder
13. februar 2002 - 22:33 #14
Ikke det samme tal det vil altid være unikt i hver streng
Avatar billede tmceu Praktikant
14. februar 2002 - 10:39 #15
excession >> inStr funktionen har samme problem som LIKE i SQL, nemlig at hvis du eks. søger efter 23, vil det passe på både 23, 230, 123 o.s.v..
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