комплект
+------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra +------------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment | protocol | varchar(100) | YES | UNI | NULL | | detail_service | varchar(120) | YES | | NULL | | date_conclusion | date | YES | | NULL | | resp_key | varchar(10) | YES | MUL | NULL | |------------------+--------------+------+-----+---------+----------------+
документ
+---------------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL |auto_increment | employee_key | varchar(10) | YES | MUL | NULL | | doc_total | int(11) | YES | | NULL | | date_doc | date | YES | | NULL | +---------------------+-------------+------+-----+---------+----------------+
SRV
+-------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra +-------------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment | employee_key | varchar(10) | YES | MUL | NULL | | srv_total | int(11) | YES | | NULL | | date_srv | date | YES | | NULL | +-------------------+--------------+------+-----+---------+----------------+
Key_E
+-------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+--------------+------+-----+---------+-------+
| key | varchar(10) | NO | PRI | NULL | |
| login_employee | varchar(100) | YES | MUL | NULL | |
+-------------------+--------------+------+-----+---------+-------+
работник
+------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| login | varchar(100) | NO | PRI | NULL | |
| name | varchar(100) | YES | | NULL | |
+------------+--------------+------+-----+---------+-------+
У меня есть эти 5 таблиц. Я хочу результат, как с этими полями:
employee.login, employee.name, SUM(kit.detail_service LIKE '%Deal%') AS 'Deal', SUM(kit.detail_service LIKE '%Not Deal%') AS 'Not Deal', SUM(kit.detail_service LIKE '%Postponed%') AS 'Postponed',
SUM (doc.doc_total) AS 'DOC', SUM (srv.srv_cheque) AS 'SRV'
key_e.k: внешний ключ для employee.login
kit.resp_key: внешний ключ к key_e
doc.employee_key / srv.employee_key: внешний ключ для key_e (оба эти значения равны, но отличаются от kit.resp_key)
Запрос, который я сделал:
SELECT
e.login,
e.name,
(SELECT SUM(k.detail_service LIKE '%Deal%') FROM kit k WHERE k.resp_key=key_e.key) AS 'Deal',
(SELECT SUM(k.detail_service LIKE '%Not Deal%') FROM kit k WHERE k.resp_key=key_e.key) AS 'Not Deal',
(SELECT SUM(k.detail_service LIKE '%Postponed%') FROM kit k WHERE k.resp_key=key_e.key) AS 'Postponed',
(SELECT SUM(doc_total) FROM doc WHERE doc.employee_key=key_e.key) AS 'DOC',
(SELECT SUM(srv_total) FROM srv WHERE srv.employee_key=key_e.key) AS 'SRV'
FROM
employee e
INNER JOIN key_e ON
e.login = key_e.login_employee
GROUP BY e.login, key_e.key
========================================
Запрос, который я сделал, возвращает мне почти все, что я хочу, за исключением дублирующихся строк. Из-за того, что ключ KIT и SRV и ключ DOC различны, результат дублируется. Я не знаю, как соединить строку с ключом SRV и DOC с помощью ключа KIT. Структура довольно запутанная, и, возможно, использование 'join' решит ее, но я не знаю как. Я сделал несколько запросов, используя 'join', а не этот внутренний выбор, но пока безуспешно