Jag har en ganska fet SQL-sats som jag vill lägga till en sak i, ur tabellen "Loginlog" vill jag hämta fältet "date", men jag vill hämta det senaste datumet. Det finns en koppling mellan Members.id och Loginlog.uid.
Jag vill alltså hämta det senaste datumet som finns med i kopplingen till användarens id. Har lite svårt att förstå hur det skall göras.
SELECT Members.id AS id, COUNT(Threads.UID) AS Posts,
Members.UserName, Members.Email,
Members.RegisteredEmail, Members.Password,
Members.ShowEmail, Members.City, Members.HomePage,
Members.AutoLogin, Members.Signature, Members.Avatar,
Members.Active, Members.RegisterDate, Members.UserLevel,
COUNT(Loginlog.UID) AS Logins, COUNT(PM.RecieverUID)
AS Mottagna_brev, COUNT(PM.SenderUID)
AS Skickade_brev
FROM Members INNER JOIN
Loginlog ON Members.id = Loginlog.UID LEFT OUTER JOIN
PM ON Members.id = PM.SenderUID LEFT OUTER JOIN
Threads ON Members.id = Threads.UID
GROUP BY Members.id, Members.UserName, Members.Email,
Members.RegisteredEmail, Members.Password,
Members.ShowEmail, Members.City, Members.HomePage,
Members.AutoLogin, Members.Signature, Members.Avatar,
Members.Active, Members.RegisterDate,
Members.UserLevel
HAVING (Members.id = 3)
Det blir väl ingen skillnad vad jag förstår. HAVING används normalt med GROUP BY, men fungerar på samma sätt som WHERE. Om du använder HAVING utan GROUP BY fungerar det på samma sätt som WHERE...
Det är möjligt att en DBMS skulle kunna optimera detta och se att just detta villkor kan utföras innan grupperingen men det är inget som man kan förutsätta i allmänhet.
Upptäckte att det blir fel resultat av min SQL-sats. Frågorn "Posts" och "Logins" återger värdet av det dubbla som Logins skall återge. Nu återger "Logins" värdet 82 när det egentligen skall återge 41. Skumt nog återger "Posts" även 82, fast det skall återge 2. Så någon slags relation har uppstått som jag inte kan hitta.
Nuvarande kod:
SELECT Members.id AS id, COUNT(Threads.UID) AS Posts,
Members.UserName, Members.Email,
Members.RegisteredEmail, Members.Password,
Members.ShowEmail, Members.City, Members.HomePage,
Members.AutoLogin, Members.Signature, Members.Avatar,
Members.Active, Members.RegisterDate, Members.UserLevel,
COUNT(Loginlog.UID) AS Logins, COUNT(PM.RecieverUID)
AS Mottagna_brev, COUNT(PM.SenderUID)
AS Skickade_brev
FROM Members LEFT OUTER JOIN
PM ON Members.id = PM.SenderUID LEFT OUTER JOIN
Loginlog ON Members.id = Loginlog.UID LEFT OUTER JOIN
Threads ON Members.id = Threads.UID
WHERE Members.id = 3
GROUP BY Members.id, Members.UserName, Members.Email,
Members.RegisteredEmail, Members.Password,
Members.ShowEmail, Members.City, Members.HomePage,
Members.AutoLogin, Members.Signature, Members.Avatar,
Members.Active, Members.RegisterDate, Members.UserLevel
Mvh, Vide
258 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91