19. februar 2001 - 22:25Der er
24 kommentarer og 1 løsning
Problem med INNER JOIN!
Hejsan!
Jeg har lavet en database med 2 tabeller! En kundereg og en vare. Jeg har lavet en en-til-en relation mellem dem - dvs. VAREID og KUNDEID. I de to tabeller er der en del kolonner! Så langt så godt... Jeg har så lavet en søgemaskine som søger på kolonnen vare i varetabellen - men den skal samtidig kunne søge på to kolonner i kunderegtabellen (altså så søgningen bliver indskrænket for brugeren!) Jeg har gjort følgende:
strSQL = \"SELECT * FROM VARE INNER JOIN KUNDEREG ON VARE.VAREID = KUNDEREG.VAREID WHERE\" strSQL = strSQL & \" (VARE.VARENAVN LIKE \'%\" & strKEYWORD & \"%\')\" strSQL = strSQL & \" OR (VARE.VAREBESKRIVELSE LIKE \'%\" & strKEYWORD & \"%\')\"
IF strKATEGORIKEYWORD = \"ALLE\" THEN strSQL = strSQL & \" AND (VARE.KATEGORI LIKE \'%ALLE%\')\" ELSE strSQL = strSQL & \" AND (VARE.KATEGORI LIKE \'%\" & strKATEGORIKEYWORD & \"%\')\" END IF
IF strAMTKEYWORD = \"ALLE\" THEN strSQL = strSQL & \" AND (KUNDEREG.AMT LIKE \'%ALLE%\')\" ELSE strSQL = strSQL & \" AND (KUNDEREG.AMT LIKE \'%\" & strAMTKEYWORD & \"%\')\" END IF . . .
Men får følgende fejl: Microsoft OLE DB Provider for ODBC Drivers fejl \'80040e10\'
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Okay! I varetabellen er der følgende kolonner som der skal søges i: kategori, varenavn og varebeskrivelse og i kunderegtabellen er der følgende: amt, by og postnr. (Og det er kun noget af koden jeg satte ind, for ellers ville spørgsmålet se for uoverskueligt ud - altså hvis hele koden var der.) Jeg har tjekket ALT for stavefejl og manglende kolonner - og jeg har udskrevet strSQL. strKATEGORIKEYWORD får jeg fra strKATEGORIKEYWORD = Trim(Request.Form(\"KATEGORI\"))
Hvis du vil have hele koden så kan du godt få den?? Jeg synes efterhånden jeg har gloet mig blind på den - men jeg er næsten sikker på at fejlen ligger i INNER JOIN sætningen....!
SELECT * FROM VARE INNER JOIN KUNDEREG ON VARE.VAREID = 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%\') AND (KUNDEREG.POSTNR LIKE \'%1000%\') AND (KUNDEREG.BY LIKE \'%Rønne%\') AND (VARE.UGE LIKE \'%10%\')
strSQL = \"SELECT * FROM VARE INNER JOIN KUNDEREG ON VARE.VAREID = KUNDEREG.VAREID 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%\')\" ELSE strSQL = strSQL & \" AND (KUNDEREG.AMT LIKE \'%\" & strAMTKEYWORD & \"%\')\" END IF
IF strPOSTNRKEYWORD = \"ALLE\" THEN strSQL = strSQL & \" AND (KUNDEREG.POSTNR LIKE \'%1000%\')\" ELSE strSQL = strSQL & \" AND (KUNDEREG.POSTNR LIKE \'%\" & strPOSTNRKEYWORD & \"%\')\" END IF
IF strBYKEYWORD = \"ALLE\" THEN strSQL = strSQL & \" AND (KUNDEREG.BY LIKE \'%Rønne%\')\" ELSE strSQL = strSQL & \" AND (KUNDEREG.BY LIKE \'%\" & strBYKEYWORD & \"%\')\" END IF
IF strUGEKEYWORD = \"ALLE\" THEN strSQL = strSQL & \" AND (VARE.UGE LIKE \'%10%\')\" ELSE strSQL = strSQL & \" AND (VARE.UGE LIKE \'%\" & strUGEKEYWORD & \"%\')\" END IF
Set myConn = Server.CreateObject(\"ADODB.Connection\") myConn.Open strDSN
Set rs = myConn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then Response.Write \"<table border=\"\"0\"\" cellspacing=\"\"0\"\" width=\"\"30%\"\" cellpadding=\"\"3\"\" align=\"\"center\"\">\" Do While Not rs.EOF Response.Write \"<tr align=\"\"left\"\"><td>\" & \"Varenavn: \" & \"<b>\" & rs(\"VARE.VARENAVN\") & \"Varebeskrivelse:\" & rs(\"VARE.VAREBESKRIVELSE\") rs.MoveNext Loop Response.Write \"</td></tr></table>\" Else Response.Write \"<div align=\"\"center\"\">INTET RESULTAT</div>\" End If myConn.Close Set myConn = Nothing %>
Nå, nu prøver jeg at bygge hele maskinen op fra bunden.... jeg tager et led af gangen! Og så kom jeg allerede til det første problem! eagleeye: Du har tidligere svaret på et af mine asp-spørgsmål ang. absolutsøgning (altså hvis man søger på sko - så finder den KUN sko og ikke også skoda og skopuds osv!) Her har jeg prøvet at skrive det du skrev til mig dengang, men det virker ikke! strSQL = \"SELECT * FROM VARE, KUNDEREG WHERE\" strSQL = strSQL & \" (VARE.VARENAVN=\'absolut\' LIKE \'%\" & strKEYWORD & \"%\')\"
Ja, det er rigtigt - altså at det er varenavn jeg søger på! Og den sætning du gav mig, er den jeg køre med nu - og den tager ALT med fx. SKO med! Skoda, skopuds, skole.... men det er jo uinteressant hvis du søger efter et par sko! :o)
Great! Tak - du skal nok få en masse point.... meeen jeg lader lige spørgsmålet stå åbent.. det kunne jo være at jeg ramler ind i andre problemer... og du er jo en sand ekspert i asp :o)
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.