У меня возникла проблема с моим запросом.Недопустимое использование групповой функции SUM() в WHERE
Я хочу использовать СУММ в своем ГДЕ, но он продолжает давать мне неправильное использование групповой функции.
AND SUM((invoices_out.net+invoices_out.vat)/currencies.rateVsPound)
>
(SELECT SUM(jobs_payments_accounts.amount/currencies.rateVsPound)
FROM jobs_payments_accounts, jobs, enquiries, currencies
WHERE jobs_payments_accounts.jobRef = jobs.id
AND jobs_payments_accounts.currencyRef = currencies.id
AND enquiries.id = jobs.enquiryRef
AND enquiries.entityRef = ed.id)
Правая сторона> работает отлично, но как я могу достичь того, что я пытаюсь сделать с левой стороны?
Вот полный подзапрос:
IF(ed.paymentTermsRef = 3,
(SELECT SUM((invoices_out.net+invoices_out.vat)/currencies.rateVsPound)
FROM enquiries, jobs, (SELECT * FROM invoices_out_reference GROUP BY invoiceRef) AS iorUnique,
(SELECT enquiryRef, sellingCurrency FROM parts_trading GROUP BY enquiryRef) AS PTU,
currencies,
invoices_out
WHERE enquiries.entityRef = ed.id
AND enquiries.id = jobs.enquiryRef
AND PTU.enquiryRef = enquiries.id
AND PTU.sellingCurrency = currencies.id
AND jobs.id = iorUnique.jobRef
AND iorUnique.invoiceRef = invoices_out.id
AND invoices_out.paid = 0
AND SUM((invoices_out.net+invoices_out.vat)/currencies.rateVsPound)
>
(SELECT SUM(jobs_payments_accounts.amount/currencies.rateVsPound)
FROM jobs_payments_accounts, jobs, enquiries, currencies
WHERE jobs_payments_accounts.jobRef = jobs.id
AND jobs_payments_accounts.currencyRef = currencies.id
AND enquiries.id = jobs.enquiryRef
AND enquiries.entityRef = ed.id)
#AND jobs.id NOT IN
# (SELECT jobRef FROM jobs_payments_accounts)
# AND jobs.id NOT IN
# (SELECT jobRef FROM jobs_payments_advance)
AND jobs.id IN
(SELECT jobRef FROM invoices_out_reference)
AND DATEDIFF(NOW(), invoices_out.date) >= 30),
NULL
)
Пробовал реализации, что вы предложили с IS NULL, но он делает запрос много медленнее.
Все еще есть много проблем с этим, надеюсь, я как-то взломаю его.
В вашем выборе, если вы сделали «SELECT SUM (jobs_payments_accounts.amount/currencies.rateVsPound) как myval« вы не можете делать, где myval> ... (untested) – BugFinder