2011-06-15 87 views
1

我正在開發一個PM系統,我希望先前發送PM的一次會話,列在最後一次收到的PM之上。但我的問題是:我該如何在數據庫中設置這樣的表格?我玩了一段時間,爲每個特定的對話使用一個ID,但該ID的來源是什麼?我不能使用自動增量(看起來),因爲我用它作爲主「ID」列。或者也許有一種完全不同的方式,我可以嘗試已經可用的列(id,from,to,subject,message,sent,read,deleted);但是如何?請幫助失去的人。PM系統 - 預覽之前的PM

回答

2

如果是新的討論(root),您可以將origin_id列添加到包含根/原始郵件的id的表格或NULL的表格中。

然後,您可以通過篩選那些比origin_id = NULL,然後通過origin_id分組獲得消息線索來獲得根消息。

+0

我想你的意思是,「原始消息的ID」。如果您使用origin_id指向前一條消息,則必須針對線程中的每條消息進行數據庫調用,才能順序獲取下一條消息。讓所有線程消息指向原點,讓您按照您的建議按origin_id進行分組,並按日期排序。 – 2011-06-15 22:26:49

0

好吧,我已經部分解決了這個問題...
我用了另一個表,其中包含一列,它包含了PM的主題。我還在常規的「pms」表中添加了一個新列,該表中保存了相同的ID以便能夠將這些表連接在一起。

但是,當我選擇所有PM以將它們顯示在收件箱中時,我還沒有找到一種按順序將對話分組的方式,如果它們被讀取或不是。我目前使用這個SQL查詢:

SELECT * 
    FROM `pms` 
    JOIN `pm_conversations` ON (pms.ConvID = pm_conversations.ID) 
    WHERE pms.To='username' 
GROUP BY pm_conversations.ID 
ORDER BY pms.ID 

我想出了這一點:

SELECT MAX(pms.ID) as pmIDS, 
      pms.*, 
      pm_conversations.* 
    FROM `pms` 
    JOIN `pm_conversations` ON (pms.ConvID = pm_conversations.ID) 
    WHERE `To`='".$UserActive."' 
GROUP BY pm_conversations.ID 
ORDER BY pmIDS DESC