in een productieomgeving worden producten per bewerkingstation gescanned en de datestamp in een DB opgeslagen.
de tabel ziet er alsvolgt uit:
de tabel bevat 1,2 miljoen barcodes en 60 kolommen met elk in elke kolom een machine.
Ik wil graag voor een rapportage een query maken die voor de huidige dag het aantal scans per machine geeft:
onderstaande query doet dat, maar is erg traag en ik vind hem niet elegant:
zijn er andere mogelijkheden om dit te bereiken?
de tabel ziet er alsvolgt uit:
barcode | machine1 | machine2 |
1 | 07-07-2016 15:40:01 | 07-07-2016 15:41:10 |
2 | 07-07-2016 15:40:11 | 07-07-2016 15:41:45 |
de tabel bevat 1,2 miljoen barcodes en 60 kolommen met elk in elke kolom een machine.
Ik wil graag voor een rapportage een query maken die voor de huidige dag het aantal scans per machine geeft:
machine1 | machine2 | machine3 |
563 | 487 | 466 |
onderstaande query doet dat, maar is erg traag en ik vind hem niet elegant:
SQL:
1
2
3
4
5
6
7
8
| select count(dmachine1.barcode) as machine1, count(dmachine2.barcode) as machine2, count(dmachine3.barcode) as machine3 from producten d left join producten dmachine1 on d.barcode = dmachine1.barcode and date(d.machine1 ) = current_date left join producten dmachine2 on d.barcode = dmachine2.barcode and date(d.machine2 ) = current_date left join producten dmachine2 on d.barcode = dmachine3.barcode and date(d.machine3 ) = current_date |
zijn er andere mogelijkheden om dit te bereiken?
[ Voor 5% gewijzigd door 107mb op 07-07-2016 16:30 . Reden: lijnen om de tabellen ]