webForumDet fria alternativet

sql-nöt att knäckas...

ASP

8 svar · 306 visningar · startad av mikul

Medlem sedan aug. 20013 824 inlägg
Frågan#1

Tjenare!
jag försöker knäcka en sql-nöt...
fast mina sql kunskaper är nog för små....

SELECT dag, foretag, [text] FROM tabell where dag in (select Distinct dag from tabell where [text] LIKE '%"& sokText &"%' and lcase(dag) LIKE '%"& lcase(dag) &"' ) ORDER BY foretag

men jag får det här felmedelandet:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Invalid Memo, OLE, or Hyperlink Object in subquery 'dag'.
/kas/menyn/SOK.ASP, line 155

nån som vet va felet är???

/ Mikul

Medlem sedan dec. 200012 464 inlägg
#2

Det ser konstigt ut

and lcase(dag) LIKE '%"& lcase(dag) &"'

Det villkoret är alltid uppfyllt (om inte dag är null men det är ett onödigt komplicerat sätt att testa för null på.)

Jag ser heller ingen anledning till att ha en subselect, den fråga du skriver borde vara samma som

query = "SELECT dag, foretag, [text] FROM tabell where [text] LIKE '%" & sokText & "%' ORDER BY foretag"

Vad är det du vill söka efter?

Medlem sedan aug. 20013 824 inlägg
#3

jo det var lite fel av mig...
jag skulle just ta bort lcase....

men det jag vill göra är att göra en sökning på maträtter....
sen ska man då välja dag....
fast det får inte vara fler dagar än en...asså inga dubletter...

ps. LarsG: det är du som gjort den=) .Ds

/ Mikul

Medlem sedan aug. 20013 824 inlägg
#4

Damn....
nu kom jag på en sak...
det är ju inte kolumnen dag som ska distinctas....utan foretag...
hur gör man då??? *ser ut som ett oskylldigt barn=)*

/ Mikul

Medlem sedan dec. 200012 464 inlägg
#5

jag begriper inte ett smack.

Kan du exemplifiera med lite data och visa vad du vill ha för resultat?

Medlem sedan aug. 20013 824 inlägg
#6

ok jag ska försöka...
jag vill göra en sökning på olika företags matsedlar för veckan...
men det värsta är att jag får upp gammla veckor oxå...
asså jag vill bara ha dom nyaste maträtterna...

så om exempelvis ett företag lägger in pasta vecka 10 och sen lägger dom in hamburgare vecka 11 och sen pasta igen vecka 12...
då hittas även vecka 11 i den sökfunktionen...
hur gör jag då för att bara hitta vecka 12 som är den senaste veckan??

/ Mikul

Medlem sedan aug. 20013 824 inlägg
#7

borde man inte kunna göra nåt sånt här typ:
SELECT max(id), dag, foretag, [text] FROM tabell
WHERE [text] LIKE '%"& sok &"%' AND dag LIKE '"& dag &"' GROUP BY foretag

fast då fick jag det här felmedelandet....
Microsoft JET Database Engine (0x80040E21)
You tried to execute a query that does not include the specified expression 'dag' as part of an aggregate function.
/kas/menyn/SOK.ASP, line 162

/ Mikul

Medlem sedan mars 2001196 inlägg
#8

I den sista frågan måste du gruppera på alla selekterade värden (förutom aggregatet).
SELECT max(id), dag, foretag, [text] FROM tabell
WHERE [text] LIKE '%"& sok &"%' AND dag LIKE '"& dag &"' GROUP BY foretag, dag, [text]

Medlem sedan dec. 200012 464 inlägg
#9

Något så här då

query = "select * from tabell t " & _
" where dag = (select max(dag) from tabell " & _
" where foretag = t.foretag) " & _
" and [text] like '%" & replace(searchWord,"'","''") & "%'"

Vad är dag för datatyp?

262 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
133 ms — ändringar (db)