Php 按日期从2个表中订购数据
我有3张表格:我的会员、论坛问题和论坛答案。 我的成员:Php 按日期从2个表中订购数据,php,mysql,sql-order-by,Php,Mysql,Sql Order By,我有3张表格:我的会员、论坛问题和论坛答案。 我的成员: id | usr ..|..| follow | .... 1 | Bob . |..|3,2,....|..... 2 | John |..|1,8,5...|..... 3 | ......|..|........The "follow" column store the data in an array of followers id.<p> 论坛答复: question_id | answer | a_nam
id | usr ..|..| follow | ....
1 | Bob . |..|3,2,....|.....
2 | John |..|1,8,5...|.....
3 | ......|..|........The "follow" column store the data in an array of followers id.<p>
论坛答复:
question_id | answer | a_name | idsender | datetime
1 .........| answ 1 | Bob ...| 1 .......| 08:20
2 ....... .| answ 2 | Bob ...| 1 .......| 07:20
1 .........| answ 3 | John ..| 2 .......| 08:00
我有这个:
$foll = mysql_query("SELECT follow FROM myMembers WHERE id='$id' LIMIT 1");
while ($row = mysql_fetch_array($foll)){
$foll1 = explode(",", $row["follow"]);
}
foreach ($foll1 as $key => $value){
$displ = mysql_query("SELECT p.* FROM
(SELECT id, datetime, topic, name, idsender, 'question' AS TYPE FROM
forum_question WHERE idsender = '$value' UNION
SELECT question_id, datetime, answer, a_name, idsender, 'answer' AS TYPE FROM
forum_answer WHERE idsender = '$value')p
ORDER BY p.datetime DESC");
while ($row = mysql_fetch_array($displ)){
$type= $row['TYPE'];
$id = $row["id"];
$topic = $row["topic"];
$name = $row["a_name"];
$idsender = $row["idsender"];
$datetime=$row['datetime'];
echo '<div>'. $name .', '. $type .', '. $topic.', '. $datetime.'</div>'";
我想要这个输出
Bob, answer, answ1, 8:20
**John,** answer, answ3, 8:00
Bob, question, foo q, 7:20
Bob, answer, answ2, 7:20
Bob, question, foo1 q, 7:10
**John,** question, foo2 q, 6:00
有可能吗??谢谢 您可以使用group by作为名称和order by datetime。所以你的问题应该是
$displ = mysql_query("SELECT p.* FROM
(SELECT id, datetime, topic, name, idsender, 'question' AS TYPE FROM
forum_question WHERE idsender = '$value' UNION
SELECT question_id, datetime, answer, a_name, idsender, 'answer' AS TYPE FROM
forum_answer WHERE idsender = '$value')p
GROUP BY p.a_name ORDER BY p.datetime DESC")
为什么不直接按名称排序呢?通过datetime DESC添加订单就可以了。我假设您希望看到从后面发布的行到前面发布的行。谢谢您的回答。如果使用“分组方式”,循环将不起作用。它只显示每个用户的一条记录。我想做一个跟踪系统。我想按日期顺序限制这两个表中的最后10个条目。分组为数组中的每个用户显示一个条目,即使我有最近日期的帖子。您能参考此链接吗?Remux能给我你的邮箱号吗?你从哪里来?很好,伙计。我可以有你的邮件id,这样我们可以有接触,并做一些知识转移,如果需要的话。或者请邀请我在gmail聊天babuvino13@gmail.com
Bob, answer, answ1, 8:20
**John,** answer, answ3, 8:00
Bob, question, foo q, 7:20
Bob, answer, answ2, 7:20
Bob, question, foo1 q, 7:10
**John,** question, foo2 q, 6:00
$displ = mysql_query("SELECT p.* FROM
(SELECT id, datetime, topic, name, idsender, 'question' AS TYPE FROM
forum_question WHERE idsender = '$value' UNION
SELECT question_id, datetime, answer, a_name, idsender, 'answer' AS TYPE FROM
forum_answer WHERE idsender = '$value')p
GROUP BY p.a_name ORDER BY p.datetime DESC")