Итак, я пытаюсь подсчитать количество деталей, количество заданий, количество в каждом задании и время, затрачиваемое на изготовление каждого задания, но я получаю несколько забавных результатов. Если я запускаю это:
SELECT
j.id,
mf.special_instructions,
count(distinct p.id) as number_of_different_parts,
count(distinct t.id) as number_of_tasks,
SUM(distinct j.quantity) as number_of_assemblies,
SUM(l.time_elapsed) as time_elapsed
FROM
sugarcrm2.mf_job mf
INNER JOIN ramses.jobs j on
mf.id = j.mf_job_id
INNER JOIN ramses.parts p on
j.id = p.job_id
INNER JOIN ramses.tasks t on
p.id = t.part_id
INNER JOIN ramses.batch_log l on
t.batch_id = l.batch_id
WHERE
mf.job_description LIKE "%BACKBLAZE%" OR
mf.customer_name LIKE "%BACKBLAZE%" OR
mf.customer_ref LIKE "%BACKBLAZE%" OR
mf.technical_company_name LIKE "%BACKBLAZE%" OR
mf.description LIKE "%BACKBLAZE%" OR
mf.name LIKE "%BACKBLAZE%" OR
mf.enclosure_style LIKE "%BACKBLAZE%" OR
mf.special_instructions LIKE "%BACKBLAZE%"
Group by j.id
и теперь я получаю точные номера деталей и задач, но сумма time_elapsed не верна. В чем может быть проблема?
Когда я пытаюсь это сделать с distinct
, я получаю очень низкое число (например, от 1 до 30, когда я ищу что-то ближе к 10000).
ОБНОВЛЕНИЕ: вот код создания:
http://pastebin.com/nbhU9rYh
http://pastebin.com/tdmAkNr4
http://pastebin.com/0TFCUaeQ
http://pastebin.com/fugr8C9U
http://pastebin.com/Zq0bKG2L
http://pastebin.com/k5rESUrq
Отношения такие:
- Информация mf_job связана с заданием
- работы имеют детали
- части имеют задачи
- задачи в пакетном режиме
- batch_log - это таблица со всеми запусками и остановками для пакетов задач, у нее есть start_time, stop_time и time_elapsed.
Я пытаюсь получить все time_elapsed из batch_log для каждого mf_job со словом backblaze в одном из его полей, а также с количеством деталей, задач и сборок. Все это нужно сгруппировать по job.id или mf_job.id