Статьи
Форум
Q&A
Полезные коды
Войти
Регистрация
Привет, Гость!
Войти
Войти с VK
Войти с Google
Регистрация
Информация
Вопросы и ответы
Вопрос
1 голос
744 просмотра
7.09.2018 / 20:32
Aladdin
Получение значений из разных таблиц
sql
Всем привет. Передо мною стоит вот такая задачка: есть три таблицы Contracts, Pays и BindedWorkers.
Contracts
contract_id | ....
Pays
pay_id | contract_id | ...
BindedWorkers
bind_id | contract_id | worker_id | ...
то есть Pays и BindedWorkers хранят в себе данные привязанные к конкретному Contract'у
Contracts
contract_id | ....
10
Pays
pay_id | contract_id | amound | ...
0 10 84000
1 10 12000
2 10 325000
3 24 67000
Workers
worker_id | name | job ...
0 Салим 0
1 Алеша 0
2 Сергей 1
3 Олег 1
BindedWorkers
bind_id | contract_id | worker_id | ...
0 10 0
1 10 1
2 10 2
3 10 3
Вообщем нужно сделать такой запрос получить вот этот результат
Contracts.contract_id | sum(Pays.amound) | {*get Workers.name with BindedWorkers.worker_id where job = 0*} | {*get Workers.name with BindedWorkers.worker_id where job = 1*}
10 488000 Салим, Алеша Сергей, Олег
Как это можно сделать?
Ответы
3 голоса
#
9.09.2018 / 12:39
Koenig
[копировать]
[скачать]
SELECT
contracts.id
,
group_concat
(
workers.name
,
workers.job
)
as
names
,
(
SELECT
sum
(
amound
)
FROM
`pays`
WHERE
contract_id
=
contracts.id
)
as
sum
FROM
`contracts`
join
bindedworkers
on
contracts.id
=
bindedworkers.contract_id
join
workers
on
bindedworkers.worker_id
=
workers.id
where
contracts.id
=
10
Изм.
Koenig
от 9.09.2018 / 12:43
22.png
(18.69 кб.)
Всего: 1
Вопросы и ответы
Топ участников
Последние ответы
Комментарии
Поделиться
Разделы
Авторские статьи
Вопросы и ответы
Полезные коды
Форум
Гостевая книга
Реклама
Мы в соцсетях