Вывод значения из двух строк в одной SQL
У меня есть две таблицы
и (скрин не всей таблицы)
и мне нужно вывести в одном запросе и имя отдающего и имя получающего в соседних столбцах(по их id)
вот пока что мой код
SELECT id_операции, id_отдающего, CONCAT(фамилия," ",имя) AS имя_отдающего
FROM barters.barter_operations, barters.clients
where id_отдающего = id_клиента;
и результат
и вот я второй день думаю, как это всё вывести, я пробовал и сделать один запрос и к нему потом присоединить другой, и сразу всё в одном запросить, короче, ничего не сработало
Ответы (1 шт):
Автор решения: Namerek
→ Ссылка
create table clients
(
id integer primary key auto_increment,
surname varchar(32),
first_name varchar(32),
patronymic varchar(32),
phone varchar(64)
);
create table deals
(
id integer primary key auto_increment,
seller_id integer references clients on update cascade on delete restrict,
buyer_id integer references clients on update cascade on delete restrict
);
insert into clients (surname, first_name, patronymic, phone)
values ('Rahman', 'Sander', null, '336 851-2654'),
('Rajiv', 'Martin', null, '846 326-6732'),
('Ivanov', 'Oleg', 'Vitalievich', '7 916 312 55 02');
insert into deals (seller_id, buyer_id)
VALUES (3, 1),
(1, 3),
(2, 3);
select d.id as deal_id,
concat_ws(' ', c2.first_name, c2.patronymic, c2.surname) as seller,
concat_ws(' ', c.first_name, c.patronymic, c.surname) as buyer
from deals d
join clients c on d.buyer_id = c.id
join clients c2 on c2.id = d.seller_id
| deal_id | seller | buyer |
|---|---|---|
| 1 | Oleg Vitalievich Ivanov | Sander Rahman |
| 2 | Sander Rahman | Oleg Vitalievich Ivanov |
| 3 | Martin Rajiv | Oleg Vitalievich Ivanov |


