2016-07-10 137 views
0

我想按日期排序顯示日誌到最近活動頁面。現在,我試圖執行此以我的MySQL選擇多個表並按datetime列排序顯示它們

"SELECT * FROM tracking_log.editlog, tracking_log.deletelog, tracking_log.loginlog, tracking_log.logoutlog ORDER BY time ASC";

,但它總是說 Column 'time' in order clause is ambiguous

所有的表有一個時間列,以日期時間格式(0000-00-00 00:00 :00)

我該如何取它們按時間排序?

在此先感謝!

+0

指定下'time'屬於你的表名。 'ORDER BY tableName.time ASC' – 1000111

+0

「如果某列不明確,則意味着查詢中的多個表有一個具有該名稱的列。」 (с)http://stackoverflow.com/questions/25721307/error-code-1052-column-datetime-in-where-clause-is-ambiguous – IceJOKER

+0

所有這些表都有時間欄。我想從4個表格中提取所有這些數據並按時間排序。我怎麼做? – technoken

回答

0

通過該表的時間列要點菜嗎?

假設你要訂購的結果通過tracking_log.editlog.time列設置,則查詢看起來象下面這樣:

SELECT 
* 
FROM tracking_log.editlog, tracking_log.deletelog, 
    tracking_log.loginlog, tracking_log.logoutlog 
ORDER BY tracking_log.editlog.time ASC; 

以防萬一,如果都在各自的表中的時間列不包含NOT NULL值在同時你需要使用COALESCE我猜。

查詢使用COALESCE

SELECT 
* 
FROM tracking_log.editlog, tracking_log.deletelog, 
    tracking_log.loginlog, tracking_log.logoutlog 
ORDER BY 
COALESCE(tracking_log.editlog.time , tracking_log.deletelog.time, tracking_log.loginlog.time,tracking_log.logoutlog.time) ASC; 
+0

嘿它現在工作!謝謝。我只需要重新輸入網址。哈哈謝謝! – technoken

+0

那麼,你正在使用哪個版本?與'coalesce'或沒有'coalesce'? – 1000111

0

「tracking_log」是你的數據庫名稱,而你從數據庫中選擇多個表,所以你需要從你想訂購的時間「,這表規定:

select * from tracking_log.editlog, tracking_log.deletelog ORDER BY tracking_log.editlog.time ASC 

或任何表從你的數據庫中你要使用'時間'。這將修復錯誤,但不會返回任何結果,因爲您在SELECT子句中有多個表,而沒有將它們關聯在一起。

您需要指定一些您想要返回結果的公共列,而不是獲取通配符,然後使用UNION表來聚合結果。舉例來說,如果你有相同的列用戶ID描述時間在所有的表,你可以做到以下幾點:

(SELECT userID, description, time FROM tracking_log.editlog) 
UNION 
(SELECT userID, description, time FROM tracking_log.deletelog) 
ORDER BY time 
+0

我試過了。沒有錯誤但不從數據庫中獲取任何東西。 '$ sql =「SELECT * FROM tracking_log.editlog,tracking_log.deletelog,tracking_log.loginlog,tracking_log.logoutlog ORDER BY tracking_log.loginlog.time ASC」; \t $ result = mysql_query($ sql)或die(mysql_error()); \t $ row = mysql_fetch_array($ result); \t for($ i = 0; $ i <3; $ i ++){ \t \t echo $ row [$ i]; \t} – technoken

+0

現在的問題是,您有多個表,但沒有MYSQL可用於將所有數據放在一行中的表的公共參考點。如果您執行「從tracking_log.loginlog ORDER BY tracking_log.loginlog.time ASC中選擇*」,您將獲得結果。是否有可用於關聯表格的公共字段或標識? – Chi

相關問題