2015-11-09 48 views
0

我在腳本中有幾個表格,我需要從所有表格中創建時間軸。主表是「帖子」 - 「喜歡」 - 「評論」。從不同表中的數據創建時間軸

帖子表中有行:PID - UID - 標題 - time_added。
喜歡錶中有行:LID - PID - UID - time_added。
註釋表具有行:CID - PID - UID - time_added。
用戶表具有行:UID - 用戶名。

我在用戶配置文件中創建一個名爲「時間線」的頁面。它應該顯示用戶按時間排序的動作。 UID引用用戶標識。

數據例如在瀏覽該網頁:

  1. 用戶評論過的帖子在XXXX xxx_time_added_xxx。
  2. 用戶贊成xxx_time_added_xxx xxxx。
  3. 用戶添加後xxxx在xxx_time_added_xxx。
  1. 有沒有一種方法或MySQL查詢,可以通過組合TIME_ADDED所有這些表,並安排他們呢?根據行動,並添加

    TID - UID - PID - LID - CID 
    

    而且每一個動作(帖子一樣,評論)和新行後插入該表:

  2. 我想創建一個新的MySQL表:具有行user_timeline在相應字段中的動作ID並將其他字段留空。如有可能,請將它們與相關表結合使用。

+0

是的,這是可能的。最好的辦法是編寫填充第二個表的查詢,然後查詢第二個表並按時間戳排序。 –

回答

2

你可以與UNION和別名:

select * from ((select 1 as type,time_added from posts where ...) union (select 2 as type,time_added from likes where ...) ...) order by time_added asc 

注意:列選擇必須在關於列類型相同的順序。

不要做:

(select 1 as type,time_added from posts where ...) union (select time_added,2 as type from likes where ...) 

或者,如果客人不願意選擇在子查詢相同的列數:

SQLSTATE[21000]: Cardinality violation: 1222 The used SELECT statements have a different number of columns 

結果集將是一個多維數組如下:

array(array('type'=>1,'time_added'=>'...'),array('type'=>2,'time_added'=>'...')); 

通過類型你知道它是否是一個pos t或類似的 希望這有助於