2012-04-12 39 views
0

我主要有3個主要表格,分別稱爲新聞,專輯和視頻。我想創建一個臉書頁面類型的頁面,其中所有三個表中的所有更新將按照發布時間按降序排列。在單個查詢中獲取來自所有dbs的內容

是否有可能使這種調用在一個單一的查詢db。

,我將簡單介紹一下我的表

消息已經ID,標題,內容,時間戳記
專輯已經ID,標題,albumdirectory,時間戳
視頻具有ID,標題,youtubelink,時間戳。

如果不行的話,最好的辦法是什麼。

回答

1

爲此目的同時查詢所有三張桌子將是不是一個好的做法。您可以創建一個供稿表。並插入參考ID從你想要的所有其他表(新聞,專輯,視頻)日期該領域。現在,您可以查詢Feed表,並根據該表中的該參考ID將其他三個表中的加入,並根據Feed表中的日期顯示它們。我正在使用這種方法,這對我很有幫助。

希望這會有所幫助。

1

這取決於數據的設計方式。如果它使用某個共享ID關聯,則可以進行單個聯接查詢以獲取所有數據。如果該數據不相關,則需要撥打3個不同的電話。

0

如果你想在每一個實體的信息共享相同的結構(即ID,標題,時間戳),那麼你可以用UNION

SELECT * FROM (
    SELECT CONCAT('news','-',id),title,`timestamp` 
    FROM news 
    UNION 
    SELECT CONCAT('albums','-',id),title,`timestamp` 
    FROM albums 
    UNION 
    SELECT CONCAT('videos','-',id),title,`timestamp` 
    FROM videos 
) AS all_items 
ORDER BY `timestamp` 

如果ID字段是整個數據庫中是唯一做到這一點(而而不僅僅是在每個表格中),那麼你可以刪除CONCAT並返回ID。

相關問題