2016-12-06 3 views
0

Я новичок в области MySQL/PHP, самостоятельно изучая. Я пытаюсь получить данные о погруженных деталях, вот запрос я использую: -Инструкция MYSQL, не показывающая правильные vaules

select jobs.job_number, jobs.employee_end, jobs.qty_comp, jobs.`date`,SUM(jobs.scrap), SUM(jobs.job_time) 
FROM jobs where jobs.job_number in (
SELECT j.job_number FROM jobs j 
WHERE j.moved_to = 'shipped' 
    AND j.`date` BETWEEN '2016-11-28' AND '2016-12-02' 
    AND j.qty_comp > 0 
) 
GROUP BY jobs.job_number 

Я получаю правильный SUM(scrap) и SUM(job_time) и job_numbers, его не показала мне последнюю запись с moved_to = 'shipped', qty_comp > 0. Он показывает первую запись первого сканирования job_number.

Благодарим за помощь и предложения.

ответ

0

Запрос может быть переписан в виде (без необходимости подзапроса):

SELECT jobs.job_number, jobs.employee_end, jobs.qty_comp, jobs.`date`, 
SUM(jobs.scrap), SUM(jobs.job_time) 
FROM jobs AS j 
WHERE j.moved_to = 'shipped' AND 
j.`date` BETWEEN '2016-11-28' AND '2016-12-02' AND 
j.qty_comp > 0 
GROUP BY jobs.job_number 

«In» условие не является необходимым, и после агрегации (группа с) является номер_заданием только jobs.job_number, SUM (jobs.scrap), SUM (jobs.job_time) будут иметь значимые значения.

Поскольку столбцы jobss.employee_end, jobss.qty_comp, заданий. date будет поступать из нескольких строк, агрегирование может дать только одно значение и в этом случае первое значение. Последнее значение, которое вы, вероятно, получите, добавив агрегацию MAX в эти столбцы.

+0

ОТПРАВИТЬ ЗА ВНИМАНИЕ – flying23x

+0

выберите a.job_number, b.employee_end, b.qty_comp, b.'date', a.job_scrap, a.job_time from (выберите jobs.job_number, SUM (jobs.scrap) как job_scrap , SUM (jobs.job_time) как job_time FROM jobs where jobs.job_number in (SELECT j.job_number FROM jobs j WHERE j.moved_to = 'отправлено' AND j.date МЕЖДУ% s И% s И j.qty_comp> 0) GROUP BY jobs.job_number) в качестве a, заданий b, где a.job_number = b.job_number и b.moved_to = 'отправлено' и b.date между% s AND% s и b.qty_comp> 0 группой по b.job_number – flying23x

+0

будет признателен это, если вы могли бы поддержать или принять ответ. Благодарю. –