Avatar billede wermelin Nybegynder
18. februar 2001 - 16:45 Der er 15 kommentarer og
1 løsning

database relationer og søgemaskine!

Hejsan!

Jeg har en db med 2 tabeller (vare og kundereg!) Her har jeg en en-til-en relation mellem vareid og kundeid!
Jeg har lavet en søgemaskine der søger på vare og kategori i varetabellen - og så er det jeg gerne vil have den til at søge på postnr. og amt i kunderegtabellen.
Kan det ikke lade sig gøre hvis man relaterer de to tabeller rigtigt??
Jeg connect\'er kun til varetabellen så søgningen skal hoppe over i kunderegtabellen!
Det er en Access db og søgemaskinen er lavet i ASP!

Håber nogen kan hjælpe!!
Wermelin
Avatar billede dudal Nybegynder
18. februar 2001 - 16:51 #1
SELECT * FROM vare INNER JOIN kundereg ON vare.KundeId = kundereg.Id WHERE vare.VareNavn LIKE \'%test%\' OR vare.Kategori LIKE \'%test%\' OR kundereg.Postnummer LIKE \'%test%\' OR kundereg.Amt LIKE \'%test%\'

Eller noget i den stil.. :-)

/Jesper
Avatar billede wermelin Nybegynder
18. februar 2001 - 16:53 #2
Okay! Jeg skal lige teste det....
Avatar billede wermelin Nybegynder
18. februar 2001 - 17:11 #3
Hmm... det ser ud til at virke - meeen jeg får en [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 2.  fejl!
Avatar billede dudal Nybegynder
18. februar 2001 - 17:18 #4
Har du rettet alle feltnavne til så de passer med databasen?

/Jesper
Avatar billede wermelin Nybegynder
18. februar 2001 - 17:31 #5
Ja, det skulle jeg mene.... men det er en stavefejl eller en mangel et eller andet sted ikk\'??
Men jeg synes sgu at jeg har kigget det hele igennem for fejl.... men fortsætter... :o)
Avatar billede wermelin Nybegynder
18. februar 2001 - 17:35 #6
Dette rigtigt nok ud ikk\'?
strSQL = \"SELECT * FROM VARE INNER JOIN KUNDEREG ON VARE.KUNDEID = KUNDEREG.VAREID WHERE\"
strSQL = strSQL & \" (VARE.VARENAVN LIKE \'%\" & strKEYWORD & \"%\')\"
strSQL = strSQL & \" OR (VARE.VAREBESKRIVELSE LIKE \'%\" & strKEYWORD & \"%\')\"

Avatar billede dudal Nybegynder
18. februar 2001 - 17:40 #7
Prøv at lave \" ON VARE.KUNDEID = KUNDEREG.VAREID\" om til \" ON VARE.KUNDEID = KUNDEREG.ID\"

/Jesper
Avatar billede wermelin Nybegynder
18. februar 2001 - 17:45 #8
Hmm.... nej! Hjalp heller ikke.... jeg ved fanme ikke ved der er i vejen.... du får lige scriptet!
strSQL = \"SELECT * FROM VARE INNER JOIN KUNDEREG ON VARE.KUNDEID = KUNDEREG.ID WHERE\"
strSQL = strSQL & \" (VARE.VARENAVN LIKE \'%\" & strKEYWORD & \"%\')\"
strSQL = strSQL & \" OR (VARE.VAREBESKRIVELSE LIKE \'%\" & strKEYWORD & \"%\')\"

IF strKATEGORIKEYWORD = \"ALLE\" THEN
    strSQL = strSQL & \" AND (VARE.KATEGORI LIKE \'%Radio/TV%\')\"
ELSE
    strSQL = strSQL & \" AND (VARE.KATEGORI LIKE \'%\" & strKATEGORIKEYWORD & \"%\')\"
END IF

IF strAMTKEYWORD = \"ALLE\" THEN
    strSQL = strSQL & \" AND (KUNDEREG.AMT LIKE \'%Nordsjællands amt%\',\'%Bornholms amt%\')\"
ELSE
    strSQL = strSQL & \" AND (KUNDEREG.AMT LIKE \'%\" & strAMTKEYWORD & \"%\')\"
END IF

IF strPOSTNRKEYWORD = \"ALLE\" THEN
    strSQL = strSQL & \" AND (KUNDEREG.POSTNR LIKE \'%1000%\',\'%3700%\')\"
ELSE
    strSQL = strSQL & \" AND (KUNDEREG.POSTNR LIKE \'%\" & strPOSTNRKEYWORD & \"%\')\"
END IF

IF strBYKEYWORD = \"ALLE\" THEN
    strSQL = strSQL & \" AND (KUNDEREG.BY LIKE \'%Rønne%\',\'%København%\')\"
ELSE
    strSQL = strSQL & \" AND (KUNDEREG.BY LIKE \'%\" & strBYKEYWORD & \"%\')\"
END IF

IF strUGEKEYWORD = \"ALLE\" THEN
    strSQL = strSQL & \" AND (VARE.UGE LIKE \'%10%\',\'%2%\')\"
ELSE
    strSQL = strSQL & \" AND (VARE.UGE LIKE \'%\" & strUGEKEYWORD & \"%\')\"
END IF

strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"varedatabase.mdb\")
Set myConn = Server.CreateObject(\"ADODB.Connection\")
myConn.Open strDSN
Set rs = myConn.Execute(strSQL)
Avatar billede dudal Nybegynder
18. februar 2001 - 17:53 #9
Ok. Tilrettet lidt. Mon det virker?? :-)

strSQL = \"SELECT * FROM VARE INNER JOIN KUNDEREG ON VARE.KUNDEID = KUNDEREG.ID WHERE\"
strSQL = strSQL & \" (VARE.VARENAVN LIKE \'%\" & strKEYWORD & \"%\')\"
strSQL = strSQL & \" OR (VARE.VAREBESKRIVELSE LIKE \'%\" & strKEYWORD & \"%\')\"

IF strKATEGORIKEYWORD = \"ALLE\" THEN
    strSQL = strSQL & \" AND (VARE.KATEGORI = \'Radio/TV\')\"
ELSE
    strSQL = strSQL & \" AND (VARE.KATEGORI LIKE \'%\" & strKATEGORIKEYWORD & \"%\')\"
END IF

IF strAMTKEYWORD = \"ALLE\" THEN
    strSQL = strSQL & \" AND (KUNDEREG.AMT = \'Nordsjællands amt\' OR KUNDEREG.AMT = \'Bornholms amt\')\"
ELSE
    strSQL = strSQL & \" AND (KUNDEREG.AMT LIKE \'%\" & strAMTKEYWORD & \"%\')\"
END IF

IF strPOSTNRKEYWORD = \"ALLE\" THEN
    strSQL = strSQL & \" AND (KUNDEREG.POSTNR = 1000 OR KUNDEREG.POSTNR = 3700)\"
ELSE
    strSQL = strSQL & \" AND (KUNDEREG.POSTNR LIKE \'%\" & strPOSTNRKEYWORD & \"%\')\"
END IF

IF strBYKEYWORD = \"ALLE\" THEN
    strSQL = strSQL & \" AND (KUNDEREG.BY LIKE \'%Rønne%\' OR KUNDEREG.BY LIKE \'%København%\')\"
ELSE
    strSQL = strSQL & \" AND (KUNDEREG.BY LIKE \'%\" & strBYKEYWORD & \"%\')\"
END IF

IF strUGEKEYWORD = \"ALLE\" THEN
    strSQL = strSQL & \" AND (VARE.UGE = 10 OR VARE.UGE = 2)\"
ELSE
    strSQL = strSQL & \" AND (VARE.UGE =\" & strUGEKEYWORD & \")\"
END IF

Avatar billede wermelin Nybegynder
18. februar 2001 - 17:59 #10
Nope! Heller ikke..... men tak for forsøget - du får dine point... jeg må bare se om jeg ikke kan få det til at køre...!
Tak for hjælpen
Avatar billede dudal Nybegynder
18. februar 2001 - 18:07 #11
Kan du ikke prøve at skrive
Response.Write strSql
Response.End

lige inden linien med

Set rs = myConn.Execute(strSQL)

Og derefter poste den sql der kommer ud?

/Jesper
Avatar billede wermelin Nybegynder
18. februar 2001 - 18:16 #12
Den er her:

SELECT * FROM VARE INNER JOIN KUNDEREG ON VARE.KUNDEID = KUNDEREG.VAREID WHERE (VARE.VARENAVN LIKE \'%sko%\') OR (VARE.VAREBESKRIVELSE LIKE \'%sko%\') AND (VARE.KATEGORI LIKE \'%Radio/TV%\') AND (KUNDEREG.AMT LIKE \'%Nordsjællands amt%\',\'%Bornholms amt%\') AND (KUNDEREG.POSTNR LIKE \'%1000%\') AND (KUNDEREG.BY LIKE \'%Rønne%\') AND (VARE.UGE LIKE \'%10%\',\'%2%\')

Jeg har søgt på \'Sko\' - og der burde komme noget frem.. se bort fra kategorien den er lagt osv!
Avatar billede wermelin Nybegynder
18. februar 2001 - 18:34 #13
Jeg har fundet ud af at det er denne sætning der er noget i vejen med...
strSQL = \"SELECT * FROM VARE INNER JOIN KUNDEREG ON VARE.KUNDEID = KUNDEREG.ID WHERE\"
Avatar billede wermelin Nybegynder
18. februar 2001 - 18:44 #14
HURRA!!!! Så virker det.....

... ON VARE.VAREID = KUNDEREG.ID WHERE....
Avatar billede wermelin Nybegynder
18. februar 2001 - 18:45 #15
Hmmmm.... og dog...!!????? FUCK!!!
Avatar billede wermelin Nybegynder
18. februar 2001 - 18:46 #16
Heh... nu går det stærkt!! Så virker det ...IGEN!
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