2016-12-06 6 views
0

Ich bin neu in der MySQL/PHP-Bereich, Lernen auf eigene Faust. Ich versuche, Daten auf versendeten Einzelteile zu ziehen, hier ist die Abfrage Ich verwende: -MYSQL-Anweisung zeigt mir nicht die richtigen Werte

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 

erhalte ich die richtige SUM(scrap) und SUM(job_time) und job_numbers, es ist nicht mir den letzten Eintrag mit moved_to = 'shipped', qty_comp > 0 zeigt. Es zeigt den ersten Eintrag des ersten Scans der job_number.

Vielen Dank für jede Hilfe und Anregungen.

Antwort

0

Die Abfrage (ohne die Notwendigkeit einer Unterabfrage) umgeschrieben werden kann:

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 

Die „IN“ Zustand nicht erforderlich ist, und da die Aggregation (Gruppe) ist nur durch job_number jobs.job_number, SUM (jobs.scrap), SUM (jobs.job_time) haben sinnvolle Werte.

Seit Spalten jobs.employee_end, jobs.qty_comp, Jobs. date wird aus mehreren Zeilen kommen die Aggregation kann nur 1 Wert und in diesem Fall den ersten Wert geben. Der letzte Wert, den Sie wahrscheinlich erhalten können, indem Sie eine MAX-Aggregation für diese Spalten hinzufügen.

+0

Danke für Ihre Hilfe – flying23x

+0

Wählen Sie a.job_number, b.employee_end, b.qty_comp, b.date', a.job_scrap, a.job_time von (wählen Sie jobs.jobnummer, SUM (jobs.scrap) als job_scrap , SUM (jobs.job_time) als job_time FROM Jobs wo jobs.job_number in (SELECT j.job_number FROM jobs j WHERE j.moved_to = 'versendet' UND j.date BETWEEN% s UND% s UND j.qty_comp> 0) GROUP BY jobs.job_number) als a, jobs b wobei a.jobnummer = b.jobnummer und b.moved_to = 'versendet' und b.date zwischen% s AND% s und b.qty_comp> 0 group von b.jobnummer – flying23x

+0

würde es begrüßen Wenn Sie die Antwort aufheben oder annehmen können. Vielen Dank. –

Verwandte Themen