webForumDet fria alternativet

Fel i SQL-sats

3 svar · 231 visningar · startad av jepsO

jepsOMedlem sedan mars 2001484 inlägg
#1

Jag försöker fixa sidindelning till mitt forum, men det buggar en smula. Här är SQL-satsen:

SELECT newthreads.*, replies.repID, replies.ReplyOrder, replies.lvl, replies.repAuth, replies.repSubj, replies.repMsg, replies.repDatumtid, replies.repMember 
FROM newthreads 
LEFT JOIN replies ON newthreads.newID = replies.newID 
[b]WHERE NOT newthreads.newID IN (SELECT TOP 10 * FROM newthreads ORDER BY newID)[/b]
ORDER BY newthreads.newID DESC, replies.ReplyOrder

page är den nuvarande sidan "minus ett", dvs sida 1 = page 0. PerPage är en variabel som bestämmer antalet inläggstrådar per delsida. F.n. ligger den på 10.

Jag försöker alltså selecta alla inläggstrådar utom de [page*PageNum] första. Allt funkar fint utom WHERE newthreads.newID NOT IN (SELECT TOP 10 * FROM newthreads ORDER BY newID).

Först tänkte jag använda rs.Move page*PerPage innan jag loopade fram alla poster, men det fungerar ju inte när jag selectar både inläggstrådar (newthreads) och svar (replies) i samma recordset.

Finns det kanske rentav ett bättre sätt att göra detta?

------------------
/ jeps0

[Redigerat av jepsO den 21 maj 2001]

@ndersMedlem sedan juni 200032 969 inlägg
#2

du kan ju inte jämföra newID mot alla fält. prova detta:

WHERE NOT newthreads.newID IN (SELECT TOP 10 newID FROM newthreads ORDER BY newID)

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
nobody expects the spanish inquisition!</A>

LarsGMedlem sedan dec. 200012 464 inlägg
#3

Du kan inte använda * i subselecten.

SELECT newthreads.*, replies.repID, replies.ReplyOrder, replies.lvl, replies.repAuth, replies.repSubj, replies.repMsg, replies.repDatumtid, replies.repMember 
FROM newthreads 
LEFT JOIN replies ON newthreads.newID = replies.newID 
WHERE newthreads.newID not IN (SELECT TOP 10 newID FROM newthreads ORDER BY newID)
ORDER BY newthreads.newID DESC, replies.ReplyOrder

Om du placerar NOT vid IN eller inte har ingen betydelse men jag tycker att det är tydligare att skriva så som jag gjort.

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

jepsOMedlem sedan mars 2001484 inlägg
#4

Kom på det :)
Jag var dock tvungen att leka lite till, eftersom SELECT TOP 0 inte fungerade så bra. Tack iaf för hjälpen - jag har en tendens att lösa problem efter att ha frågat om hjälp med innan svaret på frågan kommit :).

Resultatet finns iaf på http://bwsm.cjb.net/ .

------------------
/ jeps0

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