Хорошо, так что я работаю над последним заданием и очень застрял в этой задаче. Я пытался найти его и читать руководства, и я не получил нигде. Что еще хуже, мой профессор не удосужился научить нас, как выполнять именно этот тип задач, и я не могу попросить его о помощи, поскольку ему требуется несколько дней, чтобы ответить. Задача:
"Найти все сообщения, отправленные Майклом Фелпсом.
Создайте оператор SQL, чтобы найти все сообщения, отправленные Майклом Фелпсом.
Примечание:Вы должны использовать предложение WHERE, чтобы задать условия для этого запроса. "
Показать следующие столбцы:
- Имя отправителя
- Фамилия отправителя
- Имя получателя
- Фамилия получателя
- ID сообщения
- Сообщение
- Отметка времени сообщения
У меня есть 5таблицы в моей базе данных (contact_list, image, message_image, person и message).
Обычно это будет довольно легко, однако я застрял в том, как узнать имена отправителя и получателя. Я должен как-то перекрестно ссылаться на sender_id и receive_id из таблицы сообщений с person_id из таблицы person. Это то, на чем я застрял.
Как, черт возьми, мне это удается? Я знаю, как настроить его так, чтобы он давал номера идентификаторов, но я понятия не имею, как угадать его? Так он показывает их имена вместо? Я подумал о том, чтобы просто сделать еще одну таблицу и затем запросить ее, но я вполне уверен, что я буду отмечен для этого.
Любая помощь будет принята с благодарностью.
Данные из таблицы персонала:
person_id| first_name| last_name|location
1| Michael| Phelps| Maryland, USA
2| Katie| Ledecky| Maryland, USA
3| Usain| Bolt| Kingston, Jamaica
4| Allyson| Felix| California, USA
5| Kevin| Durant| New York City, USA
7| Elijah| Steger| Oklahoma, USA
Данные из таблицы сообщений:
| message_id | sender_id | receiver_id | message | send_datetime|
| 1 | 1 | 2 | Congrats on winning the 800m Freestyle! | 2016-12-25 09:00:00 |
| 2 | 2 | 1 | Congrats on winning 23 gold medals! | 2016-12-25 09:01:00 |
| 3 | 3 | 1 | You're the greatest swimmer ever | 2016-12-25 09:02:00 |
| 4 | 1 | 3 | Thanks! You're the greatest sprinter ever | 2016-12-25 09:04:00 |
| 5 | 1 | 4 | Good luck on your race | 2016-12-25 09:05:00 |
Ожидаемый результат: таблица будет слишком большой, чтобы ее показывать, но по сути мне нужно показывать каждое отдельное сообщение, отправленное Майклом Фелпсом, и таблицунеобходимо указать его имя и фамилию, имя и фамилию получателя, идентификатор сообщения, само сообщение и отметку времени, когда сообщение было отправлено.
Моя первоначальная попытка была аналогичной;
SELECT
s.first_name AS "Sender's First Name",
s.last_name AS "Sender's Last Name",
r.first_name AS "Receiver's First Name",
r.last_name AS "Receiver's Last Name",
m.message_id AS "Message ID",
m.message AS "Message",
m.send_datetime AS "Message Timestamp",
FROM
person s,
person r,
message m,
WHERE
m.sender_id = 1 AND
s.person_id = m.sender_id AND
r.person_id = m.receiver_id;
К сожалению, это просто не работает.