2012-06-09 45 views
0

我從來沒有試過這個,但想要回顯幾個不同表中的數據並按它們的時間戳排序。代碼我有一個booleon,我不知道爲什麼。從幾個sql表中回顯數據

<?php 
$result = mysql_query("SELECT * FROM artists ORDER BY timestamp DESC 
UNION 
SELECT * FROM news ORDER BY timestamp DESC 
UNION 
SELECT * FROM tracks ORDER BY timestamp DESC 
UNION 
SELECT * FROM gigs ORDER BY timestamp DESC 
UNION 
SELECT * FROM feature ORDER BY timestamp DESC"); 

while($row = mysql_fetch_array($result)){echo'News: <a  href="index.html">'.$row['name'].$row['title'].$row['trackname'].$row['gigname'].'</a><br>'  ;} 

?> 
+4

你知道,聯盟中的每個SELECT語句必須具有相同的列數。這些列也必須具有相似的數據類型。另外,每個SELECT語句中的列必須是相同的順序?要從不同表中選擇數據,請考慮使用JOIN。 – Nazin

+3

選擇*通常是一個壞主意,即使不使用聯盟 – 2012-06-09 23:51:11

+0

我不知道。我以前從未使用過UNSION。如何在沒有這些要求的情況下實現我想要的? –

回答

0

假設你的表屬於UNION功能的限制範圍內..

嘗試:

SELECT * FROM 
    (SELECT * FROM artists ORDER BY timestamp DESC 
    UNION 
    SELECT * FROM news ORDER BY timestamp DESC 
    UNION 
    SELECT * FROM tracks ORDER BY timestamp DESC 
    UNION 
    SELECT * FROM gigs ORDER BY timestamp DESC 
    UNION 
    SELECT * FROM feature ORDER BY timestamp DESC) as temp 
ORDER by timestamp DESC; 
+0

每張桌子都沒有遵循工會的限制,所以不得不單獨訂購。有沒有AJAX解決方案?它應該類似於Facebook的新聞提要 –