我有一些表格與各種內容。我想要完成的是在div中顯示讓這些表格中的20個最新條目。從相同名稱的多行獲取結果
這是我的第一個表 - 音頻1
userID folder title date
兩個其他文件夾長得一模一樣
音頻2
userID folder title date
音頻3
userID folder title date
我怎樣才能得到數據a同時從所有表中將它們逐一回復給由PHP按日期排序的div?
我有一些表格與各種內容。我想要完成的是在div中顯示讓這些表格中的20個最新條目。從相同名稱的多行獲取結果
這是我的第一個表 - 音頻1
userID folder title date
兩個其他文件夾長得一模一樣
音頻2
userID folder title date
音頻3
userID folder title date
我怎樣才能得到數據a同時從所有表中將它們逐一回復給由PHP按日期排序的div?
您的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
子句。
這是不是一個好主意,使用'*'在UNION查詢... – RedFilter
在任何查詢中使用'*'都不是一個好主意! –
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;
匿名downvoter會照顧解釋他們的反對意見嗎? –
某個人按時準時出現,每個人都會得到一個downvote ...我不是命名的,但是這個模式在PHP和MySQL中有很多先例:) –
@Michael:所以,如果我要注意downvote發生在13:57:41Z,理論上,我可以在同一時間在這個問題上尋找其他活動嗎? :-) –
你可以試試工會,或者你可以嘗試加入。
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)
這是一個非常不同的野獸,所以我想我給你的選項。
看來你的數據庫設置是錯誤的,你必須只有一個名爲'audio'的表,其中一個字段代表你當前在表名中使用的數字。
你在查詢,HTML佈局或PHP有問題嗎?請在您的問題中具體說明。 – RedFilter
該html不是問題,只有查詢數據庫的PHP是好的,我只是不知道如何從三個表中獲取信息:) – Tobias