webForumDet fria alternativet

lite SQL med datum igen

3 svar · 175 visningar · startad av nill

nillMedlem sedan okt. 2001387 inlägg
#1

Har fått viss insikt i SQL men inför denna prövning står det still i huvudet.

Jag har en tabell (comments) som har columner som userID, datum och tid.

jag vill ur antalet "nya" comments där userID = Session("userID"). Nya ska fås ut av att jämföra datum och tid från comments med tabellen users och där senasttid och senastdatum.

Såhär såg min kod ut innan jag insåg att det jag börjat på inte skulle fungera:

VarDammit = "SELECT userID.comments FROM comments LEFT JOIN users ON ID = '" & Session("userID") & "' WHERE userID.comments = '" & Session("userID") & "' AND ID.users = "
RecSet.Open Vaammit, Connect, adOpenStatic, adLockOptimistic

NyaKom = RecSet.RecordCount

RecSet.Close
LarsGMedlem sedan dec. 200012 464 inlägg
#2
sql = "select * from users left outer join comments on (id = comments.userid and (comments.datum > users.datum or (comments.datum = users.datum and comments.time > users.time))) where users.id = " & session("userid")

Det är lite oklart från ditt inlägg vilka kolumner som finns i vilken tabell.

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

nillMedlem sedan okt. 2001387 inlägg
#3

Har fått det att fungera någorlunda med lite pill. Det som inte fungerar att om där inte är några nya så blir det ändå "1 Ny kommentar".

om där däremot är 2 nya så blir det "två nya kommentarer" (så jag kan inte bara skriva - 1)

VarDammit = "SELECT users.ID, users.senasttid, users.senastdatum FROM users LEFT OUTER JOIN comments ON (users.ID = comments.userID AND (comments.datum < users.senastdatum or (comments.datum = users.senastdatum and comments.tid > users.senasttid))) WHERE users.ID = " & session("userid")
RecSet.Open VarDammit, Connect, adOpenStatic, adLockOptimistic
Dim NyaKom

	NyaKom = RecSet.RecordCount

	RecSet.Close
LarsGMedlem sedan dec. 200012 464 inlägg
#4

Om du bara vill ha antalet kommentarer så är det effektivare att göra

VarDammit = "SELECT count(*) as antal  FROM users inner JOIN comments ON (users.ID = comments.userID AND (comments.datum < users.senastdatum or (comments.datum = users.senastdatum and comments.tid > users.senasttid))) WHERE users.ID = " & session("userid") 
set recset = connect.execute(VarDammit)
NyaKom = recset("antal")
recset.close

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

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