Для проекта мне нужно найти все сообщения, которые отправил конкретный человек. Итак, скажем, у меня есть эти таблицы:
человек
person_id | first_name | last_name
сообщение
message_id | sender_id | receiver_id | message
И отправитель_идентификатор, и получатель_идентификатор ссылаются на персона Я должен отобразить имя и фамилию отправителя, имя и фамилию получателя и сообщение. У меня возникают проблемы с отображением имен отправителей и получателей.
Я пробовал различные варианты поиска моей проблемы, но, похоже, ничего не работает или не имеет отношения к моей проблеме. Я видел, как некоторые решения используют UNION, но я еще не узнал об этом в своем классе. Это то, что я до сих пор:
SELECT p.first_name AS "Sender First Name",
p.last_name AS "Sender Last Name",
p.first_name AS "Reciever First Name",
p.last_name AS "Reciever Last Name",
m.message_id AS "Message ID",
m.message AS "Message",
m.send_datetime AS "Message Timestamp"
FROM message m, person p
WHERE m.sender_id = 1
AND m.sender_id = p.person_id;
Это дает мне:
+-------------------+------------------+---------------------+--------------------+------------+--------------------------------------------+---------------------+
| Sender First Name | Sender Last Name | Reciever First Name | Reciever Last Name | Message ID | Message | Message Timestamp |
+-------------------+------------------+---------------------+--------------------+------------+--------------------------------------------+---------------------+
| Michael | Phelps | Michael | Phelps | 1 | Congrats on winning the 800m Freestyle! | 2016-12-25 09:00:00 |
| Michael | Phelps | Michael | Phelps | 4 | Thanks! You're the greatest sprinter ever | 2016-12-25 09:04:00 |
| Michael | Phelps | Michael | Phelps | 5 | Good luck on your race | 2016-12-25 09:05:00 |
+-------------------+------------------+---------------------+--------------------+------------+--------------------------------------------+---------------------+
Значит, имена отправителей верны, а имена получателей - нет. Если я изменю последнюю строку на
AND m.receiver_id = p.person_id;
тогда я получаю правильные имена получателей, но не правильные имена отправителей.