Есть таблица УСТРОЙСТВА, есть таблица ПРОШИВКИ, есть таблица БАГИ, между ними есть связывающие таблицы.
Между таблицами УСТРОЙСТВА и ПРОШИВКИ есть связывающая таблица УСТРОЙСТВА_ИМЕЮЩИЕ_ПРОШИВКИ т.е. одно устройство может иметь много прошивок.
Между таблицами ПРОШИВКИ и БАГИ есть связывающая таблица ПРОШИВКИ_ИМЕЮЩИЕ_БАГИ т.е. одна прошивка может иметь много багов.
Но БАГИ у нас не простые. Баги могут быть баги а могут быть примечания. За это отвечает специальный флаг is_bug в таблице багов.
Теперь, надо сделать такое:
Надо подсчитать сколько у нас для каждой прошивки конкретного устройства есть багов а сколько примечаний.
У меня запрос такой:
select distinct
t_device_firmware.firmware_version
, COUNT( t_bug_list.is_bug )
from
t_bug_list
,t_device_firmware
,r_firmware_has_bug_list
,r_device_has_firmware
where
(
r_device_has_firmware.id_device = 4213 /*номер устройства*/
AND
r_device_has_firmware.id_device_firmware = t_device_firmware.id_device_firmware
AND
r_firmware_has_bug_list.id_firmware = t_device_firmware.id_device_firmware
AND
t_bug_list.id_bug = r_firmware_has_bug_list.id_bug
)
AND
(
t_bug_list.is_bug = 1
OR
t_bug_list.is_bug = 0
)
group by t_bug_list.is_bug
но результат имеет вид
имя_прошивки число_багов
имя_прошивки число_примечений
а хотелось бы что бы имя прошивки не повторялось а резуль тат был такой
имя_прошивки число багов число_примечаний