webForumDet fria alternativet

lite SQL med datum igen

Databaser & SQL

3 svar · 177 visningar · startad av nill

Medlem sedan okt. 2001387 inlägg
Frågan#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
Medlem 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

Medlem 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
Medlem 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

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