【问题标题】:Joining two while loops to display based on date order加入两个while循环以根据日期顺序显示
【发布时间】:2016-03-25 00:44:01
【问题描述】:

所以我有这个 MySQL 查询,它基本上只是两个单独的 while 循环运行并按应有的方式显示信息,问题是它们显示的信息如下:

Test1, Test2, Test1, Test2, Test1, Test2, Test3, Test4, Test3, Test4, etc...

如您所料。虽然我想做的是根据添加到表格中的日期排列这些结果,所以如果最近添加了一组test 3 and test 4,它将显示为:

test3, test4, test1, test2, test1, test2, test3, test4 etc...

那么根据日期重新排列这些结果?我知道使用ORDER BY 只会按顺序显示每个部分,但是有没有一种方法可以使用我的代码将它们全部混合并通过date_addeddate_earned 重新排列?

$user_id = $_SESSION['userid'];                 
$sql8 = "SELECT * FROM table1 ORDER BY date_added;";

if ($result8 = $conn->query($sql8)) {

    /* fetch associative array */
    while ($row8 = $result8->fetch_assoc()) {
        printf ("%s (%s)\n", $row8["test1"], $row8["test2"]);
    }
}

$user_id = $_SESSION['userid'];                 
$sql9 = "SELECT * FROM table2 ORDER BY date_earned";

if ($result9 = $conn->query($sql9)) {

    /* fetch associative array */
    while ($row9 = $result9->fetch_assoc()) {
        printf ("%s (%s)\n", $row9["test3"], $row9["test4"]);
    }
}    

【问题讨论】:

    标签: php mysql date display


    【解决方案1】:

    全部使用联合

    Select * from(
    SELECT * FROM table1 
    union all
    SELECT * FROM table2 
    ) tab ORDER BY date_added,date_earned
    

    【讨论】:

    • 感谢您的回答,我是否还必须使用两个单独的 While 语句,或者这段代码会将它们合二为一?
    猜你喜欢
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 2014-03-29
    • 2018-08-18
    • 2016-02-12
    • 1970-01-01
    相关资源
    最近更新 更多