webForumDet fria alternativet

Avancerad select

12 svar · 189 visningar · startad av aleborg

aleborgMedlem sedan jan. 20013 341 inlägg
#1

Jag läste här på forumet någonstans att man kunde köra en select sats i en select sats, jag sökte i forumet på (select och upptäckte att det finns en bugg i sökfunktionen här :e fick bara en vit sida!

MEN över till mitt problem...
Jag håller på med sök funktionen till ett forum, databasen ser ut ungefär så här:

DevTopics
--TopicID
--Title
--Message
--ReplyTo - om inlägget är ett svar så finns ID numret till det inlägg det är svar till annars null

SQL1="Select * From DevTopics Where "& Session("Field") &" Like '%"& Session("Search") &"%' And ReplyTo IS NULL Order By "& Session("sort3")

Så får jag fram alla "huvudinlägg" som innehåller sökningen, men om jag även vill inkludera "huvudinläggen" till dom svar som innehåller sökningen. hur gör jag då? Jag vill alltså inte ha fram svaren utan det inlägget svaret tillhör!

Har jag rört till det nu?

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

aleborgMedlem sedan jan. 20013 341 inlägg
#2

Typ nått sånt här:

SQL1="Select * From DevTopics Where "& Session("Field") &" Like '%"& Session("Search") &"%' And ReplyTo IS NULL AND ReplyTo IN (Select * From DevTopics Where "& Session("Field") &" Like '%"& Session("Search") &"%' And ReplyTo >0) Order By "& Session("sort3")

Men tyvärr funkade det inte :(

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

aleborgMedlem sedan jan. 20013 341 inlägg
#3

Försökte även med det här:

SQL1="Select * From DevTopics Where "& Session("Field") &" Like '%"& Session("Search") &"%' And ReplyTo IS NULL Union All Select [ReplyTo] From [DevTopics] Where ["& Session("Field") &"] Like '%"& Session("Search") &"%' And [ReplyTo] >0 Order By "& Session("sort3")

och fick samma fel:
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

LarsGMedlem sedan dec. 200012 464 inlägg
#4
SQL1="Select * " & _
     "  From DevTopics " & _
     " Where ReplyTo IS NULL " & _
     "   AND TopicId in (Select replyto " &_
     "   From DevTopics " & _
     "  Where "& Session("Field") &" Like '%"& Session("Search") &"%' " &_
     "    And ReplyTo >0) " & _
    " Order By "& Session("sort3")

------------------
essentitia preter non sans multiplicandum

LarsGMedlem sedan dec. 200012 464 inlägg
#5

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

brukar vara ett fel i ADO, dvs innan man kommer till databasen. Det är förmodligen något fel i din VB-skriptkod.

------------------
essentitia preter non sans multiplicandum

emissionMedlem sedan dec. 19996 721 inlägg
#6
SQL1="Select * From DevTopics Where (" & Session("Field") & " LIKE '%"& Session("Search") &"%' And ReplyTo IS NULL) OR [b]ID[/b] IN (Select ReplyTo From DevTopics Where " & Session("Field") & " LIKE '%" & Session("Search") & "%' AND ReplyTo >0) ORDER BY " & Session("sort3")

Vad var fel förut?

Jo..på den första varianten..

And ReplyTo IS NULL AND ReplyTo IN (Select * From DevTopics

ReplyTo kan inte både vara NULL och samtidigt ingå i en IN-lista. Dessutom får en IN-lista endast returnera en kolumn, så man kan inte använda SELECT *

Den andra...

När man kör UNION måste båda SELECT-satserna returnera exakt lika många kolumner, i rätt ordning, av rätt datatyp.

------------------
/emission
If you see someone without a smiley, give them your colon.

aleborgMedlem sedan jan. 20013 341 inlägg
#7

Haft samma fel på båda varianterna!
Och skäms, hade glömt ändra Conn.open så att den körde igång rätt SQL sats :r

Men din kod funkade emission, TACK

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

aleborgMedlem sedan jan. 20013 341 inlägg
#8

Där emot så på den här SQL satsen plockar den fram alla svaren också istället för inlägget som svaret tillhör :(

SQL1="Select DevTopics.* From DevTopics Join Users On Who = UserID Where (DevTopics.Title Like '%"& Session("Search") &"%' Or DevTopics.Message Like '%"& Session("Search") &"%' Or Users.Name Like '%"& Session("Search") &"%' And ReplyTo IS NULL) OR TopicID IN (Select DevTopics.ReplyTo From DevTopics Join Users On Who = UserID Where (DevTopics.Title Like '%"& Session("Search") &"%' Or DevTopics.Message Like '%"& Session("Search") &"%' Or Users.Name Like '%"& Session("Search") &"%' And ReplyTo >0)) Order By "& Session("sort3")

Vad är fel?

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

LarsGMedlem sedan dec. 200012 464 inlägg
#9

Kanske lite extra parenteser

SQL1="Select DevTopics.* From DevTopics Join Users On Who = UserID Where ((DevTopics.Title Like '%"& Session("Search") &"%' Or DevTopics.Message Like '%"& Session("Search") &"%' Or Users.Name Like '%"& Session("Search") &"%') And ReplyTo IS NULL) OR TopicID IN (Select DevTopics.ReplyTo From DevTopics Join Users On Who = UserID Where (DevTopics.Title Like '%"& Session("Search") &"%' Or DevTopics.Message Like '%"& Session("Search") &"%' Or Users.Name Like '%"& Session("Search") &"%' And ReplyTo >0)) Order By "& Session("sort3")

------------------
essentitia preter non sans multiplicandum

aleborgMedlem sedan jan. 20013 341 inlägg
#10

Tack ni e guld allihopa :e

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

aleborgMedlem sedan jan. 20013 341 inlägg
#11

hur får jag fram antal träffar på dom här kriterierna?

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

LarsGMedlem sedan dec. 200012 464 inlägg
#12

Om du använder ASP så är det enklsate sättet att plocka upp alla rader med getrow

sql1 = "..."
set rs = conn.execute(sql1)
if rs.eof then
  cnt = 0
else
  arr = rs.getrows()
  cnt = ubound(arr,2) + 1
end if

------------------
essentitia preter non sans multiplicandum

aleborgMedlem sedan jan. 20013 341 inlägg
#13

tack :D

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

132 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)