, NULL ( 0) stockingorderid purchaseorderid PO SO :
ALTER TABLE tblorderitems MODIFY purchaseorderid int(10) unsigned NULL;
UPDATE tblorderitems SET purchaseorderid = NULL WHERE purchaseorderid = 0;
UNION, (, ) (, ):
SELECT orderid, stockingorderid, NULL AS purchaseorderid FROM tblallocations
UNION ALL
SELECT orderid, NULL AS stockingorderid, purchaseorderid FROM tblpurchaseorders
, :
SELECT orderid, invoiceid, subinvoicenumber, purchaseorderid, subponumber,
tblpurchaseorders.paidvia, dropshipfee, tblinvoices.taxstate,
invoicedate, datepaid, stockingorderid,
COALESCE(tblstockingorders.mfrname, tblpurchaseorders.mfrname) AS source,
shipping + surcharge + SUM(quantity * additionalshipping) AS shipping,
CASE paymentmethod
WHEN 2 THEN CONCAT('Check: ', checknumber)
ELSE CAST(paymentmethod AS CHAR)
END AS InvoicePaidVia,
(1-COALESCE(tblstockingorders.mfrdiscount, tblpurchaseorders.mfrdiscount))
* SUM(quantity * cost) AS grosscost,
SUM(quantity * price) AS grossprice
FROM tblorders
JOIN tblinvoices USING (orderid)
JOIN (
SELECT orderid, orderitemid, stockingorderid, NULL AS purchaseorderid
FROM tblallocations
UNION ALL
SELECT orderid, NULL, NULL, purchaseorderid
FROM tblpurchaseorders
) AS t USING (orderid)
LEFT JOIN tblpurchaseorders USING (orderid,purchaseorderid)
LEFT JOIN tblstockingorders USING (stockingorderid)
LEFT JOIN tblorderitems USING (orderid,orderitemid,invoiceid,purchaseorderid)
WHERE ordertype = 0 OR subinvoicenumber = subponumber
GROUP BY orderid, invoiceid, subinvoicenumber, purchaseorderid, subponumber,
tblpurchaseorders.paidvia, dropshipfee, tblinvoices.taxstate, datepaid,
invoicedate, stockingorderid, shipping, surcharge, paymentmethod,
tblstockingorders.mfrname, tblpurchaseorders.mfrname, checknumber,
tblstockingorders.mfrdiscount, tblpurchaseorders.mfrdiscount
sqlfiddle, invoicedate ( ).