Jag har följade SQL:
SELECT F.F_Id AS T_Id, F.F_Topic AS T_Topic, F.F_Views AS T_Views,
F.F_Date AS T_Date, F.F_Hidden AS T_Hidden, Users.U_Nickname AS T_Nickname,
Users.U_Fornamn AS T_Fornamn, Users.U_Efternamn AS T_Efternamn, (
SELECT count( * )
FROM frmPosts
WHERE F_Reply = F.F_Id
) AS T_Replies
FROM frmPosts AS F
LEFT JOIN Users ON F.F_Owner = Users.U_Id
WHERE F.F_Reply =0
ORDER BY (
SELECT F_Date
FROM frmPosts
WHERE F_Reply = F.F_Id
ORDER BY F_Date DESC
LIMIT 1
) DESC
Den funkar ganska bra. Den räknar ut hur många svar varje tråd i ett forum har fått. Den soterar också trådarna efter nyast svar.
Mitt problem: Trådar utan svar kommer sist. Hur får man in så att dessa trådar sorteras in rätt också?
/Edit: mySQL är det som det handlar om :)
Håller på och testar med UNION.
Nya frågan ser ut såhär:
SELECT F.F_Id AS T_Id,
F.F_Topic AS T_Topic,
F.F_Views AS T_Views,
F.F_Date AS T_Date,
F.F_Hidden AS T_Hidden,
Users.U_Nickname AS T_Nickname,
Users.U_Fornamn AS T_Fornamn,
Users.U_Efternamn AS T_Efternamn,
(
SELECT count( * )
FROM frmPosts AS tmpTable3
WHERE F_Reply = F.F_Id
) AS T_Replies
FROM frmPosts AS F
LEFT JOIN Users ON F.F_Owner = Users.U_Id
WHERE F.F_Reply =0
ORDER BY (
(
SELECT F_Date
FROM frmPosts AS tmpTable1
WHERE F_Reply = F.F_Id
) UNION (
SELECT F_Date
FROM frmPosts AS tmpTable2
WHERE F_Id = F.F_Id
) ORDER BY F_Date DESC LIMIT 1
) DESC
Med får bara följande fel:
#1064 - You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to use near
'UNION (SELECT F_Date FROM frmPosts AS tmpTable2' at line 22
Båda frågorna går bra om man kör dom var för sig.
Egentligen så var det grymt enkelt ;)
Skippade Union och körde med "OR" bara ;)