Jag håller på med ett forum där jag listar de senast skrivna trådarna i forumet. Nu är det så att jag vill sortera på ett annat sätt, på datumet då svaren är skrivna. Just nu hämtar jag trådarna från tabellen Forum och länkar den tillsammans med användarna från Users. Men jag antar att jag även måste länka in tid/datum från tabellen med svaren (Replys)?
Någon som har några tips på hur detta ska göras? Har provat med den här koden, men den vill inte skriva ut något.
$get = mysql_query("SELECT
fo.*,
us.Username AS Username, us.ID AS UserID,
re.TimeAdded AS ReTimeAdded, re.DateAdded AS ReDateAdded
FROM Users us
INNER JOIN Forum fo ON fo.UserID = 'us.ID'
LEFT JOIN ForumReplys re ON us.ID = 're.UserID'
WHERE fo.CategoryID = '$CategoryID'
ORDER BY re.DateAdded DESC, re.TimeAdded DESC");
while($row = mysql_fetch_array($get))
Länkas verkligen reply tabellen med userid? Borde rimligtvis vara länkat till primärnyckeln i forum? Kan du visa hur datastrukturen ser ut så blir det lättare att förstå.
Sen borde du rimligtvis ha forum som primär tabell och joina med users och inte tvärt om. Det spelar inte så stor roll på mindre siter, men det kan orsaka prestandaproblem när datamängden ökar.
Återigen har du enkel-fnuttar kring dina värden som du ska jämföra i SQL-frågan. ID-fälten är av heltalstyp, därför ska du inte omsluta dom med ' - då blir det en strängjämförelse mot ett heltal, vilket inte fungerar.
SELECT
fo.*,
us.Username AS Username, us.ID AS UserID,
re.TimeAdded AS ReTimeAdded, re.DateAdded AS ReDateAdded
FROM Users us
INNER JOIN Forum fo ON fo.UserID = us.ID
LEFT JOIN ForumReplys re ON us.ID = re.UserID
WHERE fo.CategoryID = $CategoryID
ORDER BY re.DateAdded DESC, re.TimeAdded DESC
Precis som det låter, plockar ut maximalt värde av ett fält i en grupp. Du kanske behöver ange det redan i select för att kunna sortera på det, inte helt säker.
Väldigt svårt att ge några svar utan att se hur datastrukturen ser ut.
Skulle också rekommendera att slå ihop TimeAdded och DateAdded till en gemensam DATETIME eller TIMESTAMP, det borde underlätta vid datum och tidssortering.
Hmm, det har aldrig varit några problem att sortera på datumet tidigare. Jag tycker att SQL-satsen borde funka rent logiskt. Men jag kanske hämtar från tabellerna i fel ordning?
249 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a