私は3つのテーブルを持っています。受信トレイ、送信トレイ、およびメッセージ。MySQLの単一の行に複数のキーがあります
単一のメッセージの場合、データは次のようになります。
メッセージ:
+----------+----------------+
|message_id|content |
+----------+----------------+
|1 |'lorem ipsum...'|
受信トレイ:
+--------+----------+-----+-------+
|inbox_id|message_id|to_id|from_id|
+--------+----------+-----+-------+
|1 |1 |1 |1 |
|2 |1 |2 |1 |
|3 |1 |3 |1 |
送信トレイ:
+---------+----------+-----+-------+
|outbox_id|message_id|to_id|from_id|
+---------+----------+-----+-------+
|1 |1 |1,2,3|1 |
1人のユーザーが複数の人にPMを送ることができます。各受信者に対して、新しい受信トレイレコードが生成されます。
現在、受信者に関係なく1つの送信トレイレコードを生成しています。
PMを送信すると、上記のデータを正確に生成できますが、送信トレイのユーザー名を生成する際に問題が発生しています。
私は送信トレイのためにこれを行うことができるようにしたいと思います(下のクエリは私が達成したいことですが、もちろん動作しません)。
SELECT
users.username,
messages.message_id,
messages.subject
FROM
messages
JOIN
outbox ON outbox.message_id = message.message_id
JOIN
users ON users.user_id IN (outbox.to_id)
WHERE
outbox.from_id = 1
ている最終的な結果
+-------------------+----------+----------------+
|username |message_id|subject |
+-------------------+----------+----------------+
|user1, user2, user3|1 |'lorem ipsum...'|
私は答えになるのではないかと心配しました。助けてくれてありがとう! – castis
ええ、1つのフィールドにIDのリストを保存するのは良い方法ではありません。私もそれを学びました。あなたはすることができますが、それは最良の選択肢ではありません。 –