0
大部分查詢都放在變量中,但爲了這個問題的目的,我將它們包含在查詢中。保證金是所有上面的別名查詢的總和($保證金)。組函數的無效使用
我收到錯誤:
SQLSTATE [HY000]:常規錯誤:在公司業績control.php 1111無效使用組功能的上線117
這裏是我的查詢:
$margin = $invoicesOut.'-'.$costs.'+'.$creditsIn.'-'.$creditsOut ;
$result = $dbh->query("SELECT CONCAT(MONTH(invoices_out.date), '/', YEAR(invoices_out.date)) AS theDate,
SUM(COALESCE(
(SELECT SUM(invoices_out.net/rate)
FROM invoices_out, (SELECT jobRef, invoiceRef FROM invoices_out_reference GROUP BY invoiceRef) AS unique_references
WHERE unique_references.invoiceRef = invoices_out.id
AND unique_references.jobRef = jobs.id
),
0)) AS invoiced,
SUM((SELECT SUM((quantity*parts_trading.sellingNet)/currencies.rateVsPound)
FROM parts_trading, currencies
WHERE parts_trading.sellingCurrency = currencies.id
AND parts_trading.enquiryRef = enquiries.id
AND jobs.id NOT IN
(SELECT DISTINCT jobRef FROM invoices_out_reference)
)
+
COALESCE(
(SELECT SUM(enquiries_custom_fees.feeAmountNet/currencies.rateVsPound)
FROM enquiries_custom_fees, parts_trading, currencies
WHERE enquiries_custom_fees.enquiryRef = enquiries.id
AND enquiries_custom_fees.enquiryRef = parts_trading.enquiryRef
AND parts_trading.sellingCurrency = currencies.id
),
0
)) AS pending,
SUM(COALESCE(
(SELECT SUM(net)
FROM credit_notes_supplier, parts_trading_buying
WHERE credit_notes_supplier.partRef = parts_trading_buying.id
AND parts_trading_buying.enquiryRef = enquiries.id)
,0
)) AS creditsIn,
SUM(COALESCE(
(SELECT SUM(net)
FROM credit_notes_customer, parts_trading
WHERE credit_notes_customer.partRef = parts_trading.id
AND parts_trading.enquiryRef = enquiries.id)
,0
)) AS creditsOut,
SUM(((SELECT SUM(qty*(parts_trading_buying.buyingNet/currencies.rateVsPound))
FROM parts_trading_buying, currencies
WHERE parts_trading_buying.buyingCurrency = currencies.id
AND parts_trading_buying.enquiryRef = enquiries.id
)
+
COALESCE(
(SELECT SUM(parts_trading_buying_charges.feeAmountNet)
FROM parts_trading_buying_charges, parts_trading_buying
WHERE parts_trading_buying_charges.partRef = parts_trading_buying.id
AND parts_trading_buying.enquiryRef = enquiries.id
)
, 0))) AS costs,
SUM($margin) AS margin
FROM jobs, enquiries, invoices_out,
(SELECT jobRef, invoiceRef
FROM invoices_out_reference
GROUP BY invoiceRef
) AS unique_invoice_refs
WHERE enquiries.id = jobs.enquiryRef
AND unique_invoice_refs.invoiceRef = invoices_out.id
AND jobs.id = unique_invoice_refs.jobRef
AND jobs.stateRef != 1
AND jobs.stateRef != 5
GROUP BY YEAR(invoices_out.date), MONTH(invoices_out.date)") ;
我已經把範圍縮小到這些:
SUM($creditsIn) AS creditsIn
SUM($creditsOut) AS creditsOut
被定義爲:
$creditsIn = 'COALESCE(
(SELECT SUM(net)
FROM credit_notes_supplier, parts_trading_buying
WHERE credit_notes_supplier.partRef = parts_trading_buying.id
AND parts_trading_buying.enquiryRef = enquiries.id)
,0
)' ;
$creditsOut = 'COALESCE(
(SELECT SUM(net)
FROM credit_notes_customer, parts_trading
WHERE credit_notes_customer.partRef = parts_trading.id
AND parts_trading.enquiryRef = enquiries.id)
,0
)' ;
嘿,你可以發送你的創建表和插入查詢我可以更好地嘗試幫助你。謝謝。 – iiro