SalamanaMedlem sedan mars 2005158 inlägg De e en fråga å inte två som rubriken säger!!
Denna sql fungera ej som den ska..vilket många kanske ser direkt..vilket jag inte gör. Den fungerar hyffs men inte mer. Den skiter totalt i villkoret gällande restNamn samt "sql66"....men inget felmess!!
Ngn som vet hur jag ska skriva den eller göra???
[B]HÄR VISAR JAG FÖRST VAR VÄRDENA KOMMER IFRÅN[/B]
sql66=sql66&"restID IN (select restID from tbl_kategori where katID = "&kok2&") And"
rest = Request.Form("sok_rest")
ratt = Request.Form("sok_matratt")
kok2 = Request.Form("sok_kok")
If request.form("catering")="1" then
sql44=sql44&" And catering=1"
End if
If request.form("utkorning")="1" then
sql44=sql44&" And utkorning=1"
End if
If request.form("avhamtning")="1" then
sql44=sql44&" And avhamtning=1"
End if
sql99 = "select restID, stadID, aktiv, restNamn, menyTyp from tbl_resturang
where [B]restID IN(select restID from tbl_resturang where restNamn
Like '%"&rest&"%' And stadID = "&request.querystring("stadID")&")
And "&sql66&" [/B] restID IN (select restID from tbl_meny_buffe where text
like '%"&ratt&"%' AND menyTyp Like tbl_resturang.menyTyp) OR restID IN
(select restID from tbl_vecka_utan where text like '%"&ratt&"%' AND
menyTyp Like tbl_resturang.menyTyp) OR restID IN (select restID from
tbl_vecka_med where menyTyp Like tbl_resturang.menyTyp AND text
like '%"&ratt&"%' And vecka Like "&(DatePart("ww",now(),2,2))&")"&sql44&";"
set rs99 = conn.execute(sql99)
CatZMedlem sedan jan. 20022 440 inlägg har du testat att skriva ut din fråga på slutet?
Response.Write sql99
@ndersMedlem sedan juni 200032 969 inlägg Den där koden borde ju inte gå att köra överhuvudtaget, eftersom raderna där du bygger sql99 inte avslutas med citationstecken.
Jag ser också att du har både or- och and-villkor. Ska det fungera får du gruppera or-villkoren med parenteser, annars får du inte det resultat du vill ha.
SalamanaMedlem sedan mars 2005158 inlägg Du har helt rätt där Anders, klistrade in lite fel, SORRY!
Men nu har jag lagt in den exakt som den är, förrutom att jag har brytit koden för lättare läsning. (se ovan)
När jag skriver ut den ser den korrekt ut i mina ögon...men den uppfyller dock ej villkoren. Allt som har med "Or" att göra fungerar.
Jag har nu fetmarkerat der som den ej tar med i sökningen!
@ndersMedlem sedan juni 200032 969 inlägg Skriv ut sql-frågan, som CatZ föreslår.
SalamanaMedlem sedan mars 2005158 inlägg Här kommer utskriften.
select restID, stadID, aktiv, restNamn, menyTyp from tbl_resturang where
restID IN(select restID from tbl_resturang where restNamn Like '%Pizzeria
Eden%' And stadID = 74) And restID IN (select restID from tbl_meny_buffe
where text like '%Capriciosa%' AND menyTyp Like tbl_resturang.menyTyp) OR
restID IN (select restID from tbl_vecka_utan where text like '%Capriciosa%'
AND menyTyp Like tbl_resturang.menyTyp) OR restID IN (select restID from
tbl_vecka_med where menyTyp Like tbl_resturang.menyTyp AND text like '%
Capriciosa%' And vecka Like 33) And catering=1;
SalamanaMedlem sedan mars 2005158 inlägg Ingen som ser vad som är fel i frågan...???
@ndersMedlem sedan juni 200032 969 inlägg Förutom att Capricciosa är felstavat i SQL-frågan måste du gruppera dina villkor (eftersom du blandar AND och OR). Borde kunna se ut något sånt här:
select restID, stadID, aktiv, restNamn, menyTyp
from tbl_resturang
where
(restID IN(select restID from tbl_resturang where restNamn Like '%Pizzeria Eden%'
And stadID = 74)
And restID IN (select restID from tbl_meny_buffe where text like '%Capriciosa%'
AND menyTyp Like tbl_resturang.menyTyp))
OR (restID IN (select restID from tbl_vecka_utan where text like '%Capriciosa%'
AND menyTyp Like tbl_resturang.menyTyp))
OR (restID IN (select restID from tbl_vecka_med where menyTyp Like tbl_resturang.menyTyp AND
text like '%Capriciosa%' And vecka Like 33))
And catering=1;
Du borde inte heller använda like när du ger ett exakt värde utan =. Like ska du använda för sökningar med wildcard.
Jag förstår inte heller varför du har med restID i alla delfrågor. Du har dessutom två likadana delfrågor, där du söker efter Capricciosa och menytyp.
Kanske den första ska bort?
(Jag är inte helt säker på att jag grupperat villkoren rätt, för jag är lite osäker på vad det egentligen är för resultat du vill ha ut.)
SalamanaMedlem sedan mars 2005158 inlägg Ska testa ditt förslag så fort jag kommer hem till min burk.
Anledningen till att jag använder LIKE är att jag vill ha ut allt som innehåller det man angett som sökord. Sök på "ca" och den ska generera träffar på allt som innehåller "ca" i db.
Du säger att jag har två likadana delfrågor... Det kan stämmer inte. Jag går in i olika tabeller men söker efter samma ord i båda frågorna.
Det jag ska ha ut är följande.
Först går jag in i tbl_resturang och hämtar alla som heter "Pizzeria Eden" och som har stadID 74, här tar jag även med menyTyp...det kan vara 1, 2 eller 3.
Sedan är det menyTyp som anger vilken tabell som jag ska hämta ut allt från som innehåller ordet "Capricciosa".
Är menyTyp = 1 så ska den hämta data i "tbl_meny_buffe"
Är menyTyp = 2 så ska den hämta data i "tbl_vecka_utan"
Är menyTyp = 3 så ska den hämta data i "tbl_vecka_med"
@ndersMedlem sedan juni 200032 969 inlägg
Sök på "ca" och den ska generera träffar på allt som innehåller "ca" i db.
Jo, jag förstår det. Men du använder även LIKE mellan kolumnnamnen i din join, och även när du skriver vecka like 33. Använd = när du gör exakta jämförelser.
Det kan stämmer inte. Jag går in i olika tabeller men söker efter samma ord i båda frågorna.
Jaså? Det är dessa jag menar:
restID IN(select restID from tbl_resturang where restNamn Like '%Pizzeria Eden%'
And stadID = 74)
And [b]restID IN (select restID from tbl_meny_buffe where text like '%Capriciosa%'
AND menyTyp Like tbl_resturang.menyTyp))[/b]
OR ([b]restID IN (select restID from tbl_vecka_utan where text like '%Capriciosa%'
AND menyTyp Like tbl_resturang.menyTyp))[/b]
Men om det ska vara så, så ska det väl vara så. Du vet bättre vad du är ute efter. Det borde väl gå att så du har de villkoren först, och sedan har tre andra villkor, antingen namn Pizzeria Eden i stad 74, eller vilken restaurang som helst som serverar i vecka 33?
Nåja, jag förstår inte riktigt ändå, tror jag. =)
SalamanaMedlem sedan mars 2005158 inlägg Hej igen Anders..har ej haft tillgång till min burk.
Har testat att gruppera som du skrev men resultatet blir detsamma.
Allt fungerar förrutom att den skiter totalt i restNamn samt stadID.
Förstår om de e svårt att fatta vad jag gör...men du har inget annat förslag på vad som gör att den hoppar över restNamn samt stadID??
@ndersMedlem sedan juni 200032 969 inlägg
men du har inget annat förslag på vad som gör att den hoppar över restNamn samt stadID??
Prova att sätta parenteser så du sluter in hela dina OR-villkor.
SalamanaMedlem sedan mars 2005158 inlägg Då var de dags igen..
Om man ska göra som Ander säger...sätta paranteser runt OR-vilkoren..
Hur/var gör man de??
select restID, stadID, aktiv, restNamn, menyTyp from tbl_resturang where restID IN(select restID from tbl_resturang where restNamn Like '%Hanssons krog%' And stadID = 82)
And restID IN (select restID from tbl_meny_buffe where text like '%fläskfile%' AND menyTyp = tbl_resturang.menyTyp)
OR restID IN (select restID from tbl_vecka_utan where text like '%fläskfile%' AND menyTyp = tbl_resturang.menyTyp)
OR restID IN (select restID from tbl_vecka_med where menyTyp = tbl_resturang.menyTyp AND text like '%fläskfile%' And vecka = 6);