2015-12-18 32 views
3

所以我有這樣的MySQL查詢這基本上是運行和顯示信息,他們應該只是兩個單while循環,這個問題是他們顯示如下信息:連接兩個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"]); 
    } 
}  

回答

1

使用UNION ALL

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

感謝您的回答,我必須仍然使用兩個獨立的while語句或將這些代碼結合他們呢? – Snappysites