2013-03-31 62 views
1

我正在構建用於在OA系統中創建對話框外觀用戶消息功能的表格。mysql查詢返回「指定參與者的對話框ID」

我有一個表格,顯示一個對話框的參與者這樣 dialog_user:

dialog user 
1  1 
1  2 
2  1 
2  3 

現在用戶1將消息發送給用戶2,所以我需要創建一個消息,然後將消息發送到對話框哪個用戶1和用戶2參與。

如何在一個或有限的查詢中找到對話ID?

此外,我還實現了一個到更多的消息發送功能。每個接收者將在他和發件人參與的對話中看到消息。所以我需要找到發件人和每個接收者參與的所有對話框,並將新的消息ID插入到其中。 是否可以在一個漂亮的查詢中完成?

我想保存參與者崩盤有序的串狀

dialog users 
1  1,2 
1  1,3 

,但我不認爲這是一個很好的做法引起用戶字段應該是varchar,而有限的長度(比方說, 255)。

有沒有人有這方面的想法?

+0

你的意思,你是打算用VARCHAR類型一dbcolumn保存值「1,2」? – bestprogrammerintheworld

+0

是的,但也可能是'1,2,3','1,4,5,6'。但下面的人解決了我的問題,並防止像這樣保存數據。 –

+0

好的。好! :-)對不起,我到現在還沒有回答,但我昨天生病了。 – bestprogrammerintheworld

回答

1
SELECT d1.dialog 
FROM dialog_user d1 
JOIN dialog_user d2 USING (dialog) 
WHERE d1.user = 1 
AND d2.user = 2 
+0

這正是我需要的!非常感謝! –

0

也許是這樣的(假設DialogId /用戶ID被索引):

SELECT 
    DISTINCT(DialogId) 
FROM 
    Dialogs d 
WHERE 
    EXISTS (SELECT NULL FROM Dialogs p1 WHERE p1.DialogId = d.DialogId AND p1.UserId = 1) 
    AND EXISTS (SELECT NULL FROM Dialogs p1 WHERE p1.DialogId = d.DialogId AND p1.UserId = 2)