2012-07-10 71 views
0

我有兩個表MYSQL結合2個表

參與者:thread_id單,participant_id

消息:MESSAGE_ID,thread_id單,message_poster_id,消息

提供的thread_id我該如何確保有人認爲是不是一個參與者不讀取他們不屬於的線程?這可能在一個查詢中,或者我必須運行一個查詢,然後使用php來說是否允許他們運行第二個查詢來獲取消息?

我有兩個變量是sessionid和thread_id。

我的邏輯是SELECT消息。* WHERE thread_id ='1'並且參與者是PART_(參與者)與參與者表中的thread_id ='1'的PART(不是)。

問題是,有其他參與者,我需要顯示該線程的所有消息,不僅會話持有者。換句話說,我正在尋找一個查詢來獲取會話持有者參與的給定線程中的所有消息,即使他沒有發佈消息(參與者在參與者表中給出)。

+0

你能解釋一下嗎?你怎麼能成爲一個線程的參與者而不發佈消息? – bnvdarklord 2012-07-10 00:53:41

+0

參與者是participant_table中的商店。參與者的ID在那裏發佈。如果他們是一個表中的參與者,那麼他們被賦予privelages以發佈到thread_messages中,並保存其值thread_id,poster_id,message,message_id – Darius 2012-07-10 00:56:47

+1

這是你想要的,還是我誤解?從消息m中選擇m。*內部連接參與者p on m.thread_id = p.thread_id其中p.thread_id = 1 – bnvdarklord 2012-07-10 01:00:38

回答

3
SELECT m.* FROM messages m INNER JOIN participants p 
ON m.thread_id=p.thread_id 
WHERE m.thread_id = '1' AND p.participant_id='the-session-holder-id' 

如果上面的查詢返回0,那就意味着會話保持器ID不是participants.Otherwise,查詢將返回所有的消息屬於該線程。