メッセージ、件名、および の 3 つのテーブルがありますmessage_subject_rel
。アイデアは、多くの件名に関連するメッセージを作成してから、件名を横断して検索することです。
メッセージがあるとしましょう:
Id: 1, Message: This is a message
2科目:
Id:1, Subject: Math
Id:2, Subject: Science
そして、次の 2 つのmessage_subject_rel
エントリがあります。
Id: 1, message_id: 1, subject_id: 1
Id: 2, message_id: 1, subject_id: 2
数学に関連するメッセージを検索したい場合は、3 つのテーブルを単純に結合し、where 句を subject = "Math" にします。
しかし、どうすればよいかわかりません。数学と科学に関連するメッセージを検索することです。単純な結合を行うと、次のようなテーブルが得られます。
id message user_id created_at ip id message_id subject_id id subject
また、where subject = "Math" and subject = "Science"
各メッセージには各行に関連する件名が1つしかないため、結果が得られませんが、複数の件名を持つメッセージの行が重複します。
それで、あなたは何をお勧めしますか?