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 |
보낼 편지함 : 단일 사용자가 여러 사람의 PM을 보낼 수
+---------+----------+-----+-------+
|outbox_id|message_id|to_id|from_id|
+---------+----------+-----+-------+
|1 |1 |1,2,3|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
예, 한 필드에 ID 목록을 저장하는 것이 가장 좋은 방법은 아닙니다. 나는 그것을 또한 배웠다. 당신은 할 수 있지만 최선의 선택은 아닙니다. –