Hoe zou ik de volgende SQL code korter of effcienter maken? Het werkt snel met een kleine dataset alleen als er veel data (meer dan 1000 in order & 1200 in invoice & 4000 in order_status) in staat is het heel langszaam.
Gaat om het volgende stukje SQL:
Nadeel is dat ik die invoice niet kan en mag ombouwen tot een waardig tabel met invoices en credits. En de subquery betreft order_status moet de laatst mogelijke status van de bestelling ophalen.
Gaat om het volgende stukje SQL:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| SELECT o.O_order_ID FROM ( SELECT o.*, max(os.OS_datetime) latestDate FROM `order` o INNER JOIN `order_status` os ON o.O_order_ID = os.O_order_ID GROUP BY o.O_order_ID ) o INNER JOIN `order_status` os ON os.O_order_ID = o.O_order_ID LEFT JOIN invoice i ON o.O_order_ID = i.O_order_ID AND i.I_type = 'invoice' LEFT JOIN invoice c ON o.O_order_ID = c.O_order_ID AND c.I_type = 'credit' WHERE o.O_order_ID <> '' AND os.OS_datetime = o.latestDate AND o.O_payment_status = '1' GROUP BY o.O_order_ID |
Nadeel is dat ik die invoice niet kan en mag ombouwen tot een waardig tabel met invoices en credits. En de subquery betreft order_status moet de laatst mogelijke status van de bestelling ophalen.
[ Voor 5% gewijzigd door n2theb op 16-10-2015 09:50 ]