webForumDet fria alternativet

Forum: Tråden med senaste svaret högst upp

Databaser & SQL

7 svar · 594 visningar · startad av streetrobban

Medlem sedan jan. 20011 140 inlägg
Frågan#1

Hej!

Jag har två tabeller (Forum och ForumAnswers). Jag vill sortera inlägg från Forum beroende på vilket datum i Forum ELLER ForumAnswers som är högst (senast). Jag vill liksom "slå ihop" Date-fälten från både Forum och ForumAnswers och skriva ut det senaste inlägget högst upp.

Min SQL-kod ser ut som följer:

$get = mysql_query("SELECT Frm.ID, Frm.Time, Frm.Date, Frm.Topic, Frm.Views, Ans.ID, Usr.Firstname, Usr.Lastname
FROM Users AS Usr
JOIN Forum AS Frm ON Frm.WriterID = Usr.ID
LEFT JOIN ForumAnswers AS Ans ON Ans.FatherID = Frm.ID
ORDER BY Ans.Date DESC, Ans.Time DESC, Frm.Date DESC, Frm.Time DESC");
Medlem sedan jan. 20011 140 inlägg
#2

Jag skriva något i stil med:

ORDER BY Ans.Date DESC AND Frm.Date DESC, Ans.Time DESC AND Frm.Time DESC");
Medlem sedan juni 200032 967 inlägg
#3

Först och främst: Finns det någon anledning till att du har datum och tid i skilda fält?

Medlem sedan jan. 20011 140 inlägg
#4

Bara för att det är lättare att hämta, du föreslår att jag lägger tid och datum i samma fält?

Medlem sedan jan. 20011 140 inlägg
#5

Nu har jag lagt till ett fält som heter DateAndTime som är DATETIME.

Medlem sedan juni 200032 967 inlägg
#6

Jag hade gjort det. Det mesta blir lättare då - inte bara lösningen på din nuvarande fråga:

ORDER BY 
     CASE WHEN Ans.DateAndTime IS NOT NULL 
          THEN Ans.DateAndTime
          ELSE Frm.DateAndTime
     END DESC

Mvh

Medlem sedan jan. 20011 140 inlägg
#7

Ahh, det är så vackert :)

Tack för hjälpen @nders, och tipset med DATETIME.

Medlem sedan juni 200032 967 inlägg
#8

Varsågod! :)

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