Как получить СУММ для правильного вычисления с соединением?

Итак, я пытаюсь подсчитать количество деталей, количество задач, количество в каждом задании и время, которое потребовалось для производства каждого задания, но я получаю некоторые фанковые результаты. Если я запустил это:

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 неверна. В чем может быть проблема?

Когда я пробую его с отличным , я получаю очень маленькое число (например, от 1 до 30, когда я ищу что-то ближе к 10 000).

ОБНОВЛЕНИЕ: вот код создания :

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

19
задан APC 7 September 2011 в 17:21
поделиться