2011-11-03 52 views
1

我有一些表格與各種內容。我想要完成的是在div中顯示讓這些表格中的20個最新條目。從相同名稱的多行獲取結果

這是我的第一個表 - 音頻1

userID folder title date 

兩個其他文件夾長得一模一樣

音頻2

userID folder title date 

音頻3

userID folder title date 

我怎樣才能得到數據a同時從所有表中將它們逐一回復給由PHP按日期排序的div?

+1

你在查詢,HTML佈局或PHP有問題嗎?請在您的問題中具體說明。 – RedFilter

+0

該html不是問題,只有查詢數據庫的PHP是好的,我只是不知道如何從三個表中獲取信息:) – Tobias

回答

2

您的SQL查詢將是一個3部分UNION。當不需要關係JOIN,而是您只需要從多個表中返回行時,查詢連接來自具有(通常)相似結構的多個表的結果。

$sql = "SELECT userID, folder, title, date FROM audio1 
    UNION ALL 
    SELECT userID, folder, title, date FROM audio2 
    UNION ALL 
    SELECT userID, folder, title, date FROM audio3 
    LIMIT 20;"; 

$result = mysql_query($sql); 
if ($result) { 
    // Fetch results and echo them into a list. 
} 

您需要一列ORDER BY。這可能是date,但您可能有其他計劃。在LIMIT 20之前添加ORDER BY子句。

+1

這是不是一個好主意,使用'*'在UNION查詢... – RedFilter

+0

在任何查詢中使用'*'都不是一個好主意! –

3
SELECT userID, folder, title, date 
    FROM audio1 
UNION ALL 
SELECT userID, folder, title, date 
    FROM audio2 
UNION ALL 
SELECT userID, folder, title, date 
    FROM audio3 
ORDER BY date DESC LIMIT 20; 
+0

匿名downvoter會照顧解釋他們的反對意見嗎? –

+0

某個人按時準時出現,每個人都會得到一個downvote ...我不是命名的,但是這個模式在PHP和MySQL中有很多先例:) –

+0

@Michael:所以,如果我要注意downvote發生在13:57:41Z,理論上,我可以在同一時間在這個問題上尋找其他活動嗎? :-) –

0

你可以試試工會,或者你可以嘗試加入。

SELECT 
    COALESCE(t1.userID, t2.userID, t3.userID) as userID 
      , t1.folder, t1.title, t1.date 
      , t2.folder, t2.title, t2.date 
      , t3.folder, t3.title, t3.date 
FROM table1 t1 
FULL OUTER JOIN table2 t2 ON (t1.userID = t2.userID) 
FULL OUTER JOIN table3 t3 ON (t1.userID = t3.userID) 

這是一個非常不同的野獸,所以我想我給你的選項。

1

看來你的數據庫設置是錯誤的,你必須只有一個名爲'audio'的表,其中一個字段代表你當前在表名中使用的數字。

相關問題