0

私は2つのテーブルを持っています

参加者 : thread_id、participant_id

メッセージ : message_id、thread_id、message_poster_id、メッセージ

thread_id が提供された場合、参加者ではない人が所属していないスレッドを読まないようにするにはどうすればよいですか? これは 1 つのクエリで可能ですか、それとも 1 つのクエリを実行してから php を使用して、2 番目のクエリを実行してメッセージをフェッチすることが許可されているかどうかを確認する必要がありますか?

私が持っている 2 つの変数は、sessionid と thread_id です。

私のロジックは SELECT message.* WHERE thread_id = '1' であり、参加者は、参加者テーブルの thread_id = '1' の PART (and ではない) です。

それに関する問題は、他の参加者がいて、セッション所有者だけでなく、そのスレッドのすべてのメッセージを表示する必要があることです。言い換えれば、セッション所有者がメッセージを投稿していなくても、特定のスレッドですべてのメッセージを取得するクエリを探しています (参加者は参加者テーブルに表示されます)。

4

1 に答える 1

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 を返す場合、session-holder-id が参加者ではないことを意味します。それ以外の場合、クエリはそのスレッドに属するすべてのメッセージを返します。

于 2012-07-10T01:04:53.823 に答える