Jeg har en tabel for et forum som består af felterne id,date,text og parent. Hvis en post er et svar til en anden post vil parent indeholde dennes id. Jeg vil gerne sortere posterne efter dato for seneste svar. Her er mit forslag til en sql query:
(SELECT parent.id, max( child.date ) AS date FROM forum AS parent LEFT JOIN forum AS child ON parent.id = child.parent WHERE child.date <> 'null' GROUP BY parent.id ) UNION ( SELECT id, date FROM forum WHERE parent = 0)
Problemet er bare at mit webhotel kører mysql ver. 3.23.55 hvor det ikke er muligt at lave UNION mellem to SELECT queries. Er der en metode til at få samme resultat uden UNION?
Det krævede lidt mere end jeg havde regnet med, men nu virker det. Tak for hjælpen. Kan I ikke lige lave et svar hvis i vil have point.
$merge = array();
$sql = "SELECT parent.id,parent.user_index,parent.header,DATE_FORMAT(max(child.date),'%e/%c-%y %T') AS date,"; $sql .= "parent.message,parent.parent FROM forum AS parent"; $sql .= " LEFT JOIN forum AS child ON parent.id = child.parent WHERE child.date <> 'null'"; $sql .= " GROUP BY parent.id";
$result = mysql_query($sql) or die(mysql_error()); while (false != ($row = mysql_fetch_assoc($result))) $merge = array_merge($merge,array($row));
$sql = "SELECT parent.id,parent.user_index,parent.header,DATE_FORMAT(parent.date,'%e/%c-%y %T') AS date,"; $sql .= "parent.message,parent.parent FROM forum AS parent"; $sql .= " LEFT JOIN forum AS child ON parent.id = child.parent WHERE isnull(child.id)";
$result = mysql_query($sql) or die(mysql_error()); while (false != ($row = mysql_fetch_assoc($result))) $merge = array_merge($merge,array($row));
Min dato er i et dato-felt. Grunden til at jeg ændrer formatet er at det format skal bruges senere. Er der en nem måde at konvertere fra mysql dato-format til php dato-format?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.