powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сбор данных из нескольких таблиц.
3 сообщений из 3, страница 1 из 1
Сбор данных из нескольких таблиц.
    #39192792
AndyJOKER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Есть 3 таблицы:
1) таблица "employee" (сотрудники):
idname1Иванов2Петров3Сидоров
2) таблица "viol_type" (вид нарушений):
iddescription1трудовая дисциплина2кассовая дисциплина3приемка
3) таблица "evnts" (события) в которой хранится какой сотрудник когда и на какую сумму накосячил
employee_idviol_type_idloss_amount223500.00311500.0033700.00
На выходе хотелось бы получить полную выборку по всем сотрудникам по количеству и сумме нарушений в разрезе видов нарушений:
Сотрудниктрудовая дисциплина (кол-во)суммакассовая дисциплина (кол-во)суммаприемка (кол-во)суммаИТОГО (кол-во)ИТОГО (сумма)Иванов00.0000.0000.0000.00Петров00.0013500.0000.0013500.00Сидоров11500.0000.001700.0022200.00
Без создания temporary таблицы не представляю как это все можно собрать за один запрос. Т.е. обязательно должны быть все сотрудники и все виды нарушений, даже если записей в таблице evnts нет.
Предполагаю, что должно быть как минимум 3 запроса:
Код: sql
1.
2.
SELECT id,name FROM employee
SELECT id,description FROM viol_type


И дальше каким-то образом с использованием JOIN, GROUP и UNION ALL?
...
Рейтинг: 0 / 0
Сбор данных из нескольких таблиц.
    #39192845
AndyJOKER,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select e.name, 
SUM(IF(t.id=1, 1, 0)) as "трудовая дисциплина (кол-во)", SUM(IF(t.id=1, v.loss_amount, 0)) as "сумма1",
SUM(IF(t.id=2, 1, 0)) as "кассовая дисциплина (кол-во)", SUM(IF(t.id=2, v.loss_amount, 0)) as "сумма2",
SUM(IF(t.id=3, 1, 0)) as "приемка (кол-во)", SUM(IF(t.id=3, v.loss_amount, 0)) as "сумма3",
count(t.id) as "итого (кол-во)", sum(v.loss_amount) as "ИТОГО (сумма)"
 from employee e
 left join evnts v ON e.id=v.employee_id
 left join viol_type t ON v.viol_type_id=t.id
group by v.employee_id
order by e.id;
...
Рейтинг: 0 / 0
Сбор данных из нескольких таблиц.
    #39194040
AndyJOKER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Громыхатель , пасиб! В общем-то я предполагал, что изящно в моем случае сделать не получится. ;) Раз записей не существует - значит только проверкой и "ручным" подсчетом.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сбор данных из нескольких таблиц.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]