SQL Fiddle
Настройка схемы MySQL 5.6 :
create table contact_list(
connection_id int,
person_id int,
contact_id int,
favorite varchar(1)
);
insert into contact_list values (1, 1, 2, 'n');
insert into contact_list values (2, 1, 3, 'n');
insert into contact_list values (3, 1, 4, 'n');
insert into contact_list values (4, 1, 5, 'n');
insert into contact_list values (5, 1, 6, 'n');
insert into contact_list values (6, 2, 1, 'y');
insert into contact_list values (7, 2, 3, 'n');
insert into contact_list values (8, 2, 4, 'n');
insert into contact_list values (9, 3, 1, 'y');
insert into contact_list values (0, 3, 4, 'n');
insert into contact_list values (1, 4, 5, 'n');
insert into contact_list values (2, 4, 6, 'n');
insert into contact_list values (3, 5, 1, 'y');
insert into contact_list values (4, 5, 6, 'n');
insert into contact_list values (5, 7, 1, 'y');
insert into contact_list values (6, 7, 2, 'n');
insert into contact_list values (7, 7, 4, 'n');
create table person (
person_id int,
first_name varchar(200),
last_name varchar(200),
person_age int
);
insert into person values (1, 'Michael', 'Phelps', null);
insert into person values (2, 'Katie', 'Ledecky', null);
insert into person values (3, 'Usain', 'Bolt', null);
insert into person values (4, 'Allyson', 'Felix', null);
insert into person values (5, 'Kevin', 'Durant', null);
insert into person values (7, 'Tom', 'Soyer', 25);
create table message (
message_id int,
sender_id int,
receiver_id int,
message varchar(200),
send_datetime DATETIME
);
insert into message values (1, 1, 2, 'Congrats on winning the 800m Freestyle!', '2016-12-25 09:00:00');
insert into message values (2, 2, 1, 'Congrats on winning 23 gold medals!', '2016-12-25 09:01:00');
insert into message values (3, 3, 1, 'You\'re the greatest swimmer ever', '2016-12-25 09:02:00');
insert into message values (4, 1, 3, 'Thanks! You\'re the greatest sprinter ever', '2016-12-25 09:04:00');
insert into message values (5, 1, 4, 'Good luck on your race', '2016-12-25 09:05:00');
Что нужно сделать, чтобы получить эти поля :
select
pSender.first_name as 'Sender\'s first name',
pSender.last_name as 'Sender\'s last name',
pReciever.first_name as 'Receiver\'s first name',
pReciever.last_name as 'Receiver\'s last name',
m.message_id as 'Message ID',
m.message as 'Message',
m.send_datetime as 'Message Timestamp'
from
message m
join person pSender on pSender.person_id = m.sender_id
join person pReciever on pReciever.person_id = m.receiver_id
Результаты
| Sender's first name | Sender's last name | Receiver's first name | Receiver's last name | Message ID | Message | Message Timestamp |
|---------------------|--------------------|-----------------------|----------------------|------------|--------------------------------------------|----------------------|
| Katie | Ledecky | Michael | Phelps | 2 | Congrats on winning 23 gold medals! | 2016-12-25T09:01:00Z |
| Usain | Bolt | Michael | Phelps | 3 | You're the greatest swimmer ever | 2016-12-25T09:02:00Z |
| Michael | Phelps | Katie | Ledecky | 1 | Congrats on winning the 800m Freestyle! | 2016-12-25T09:00:00Z |
| Michael | Phelps | Usain | Bolt | 4 | Thanks! You're the greatest sprinter ever | 2016-12-25T09:04:00Z |
| Michael | Phelps | Allyson | Felix | 5 | Good luck on your race | 2016-12-25T09:05:00Z |