2015-12-08 4 views
1

Я пытаюсь обновить свои запросы к MySQL и обнаружил, что мне нужно использовать вложенные запросы, чтобы получить нужные мне результаты.Вложенный MySQL Не работает из Access VBA

У меня есть следующий код: -

SELECT tbl_invoices.ID, tbl_invoices.customer_id, (SELECT Sum(tbl_invoices_payments.payment_amount) AS SumOfpayment_amount FROM tbl_invoices_payments WHERE invoice_id = id GROUP BY tbl_invoices_payments.invoice_id) AS Payments 
FROM tbl_invoices 
WHERE (((tbl_invoices.customer_id)=11)); 

я получаю ошибку: -

2014 - Команды из синхронизации; вы не можете запустить эту команду сейчас

Результаты, которые мне нужны, это просто СУММА всех платежей за каждый счет-фактуру.

Может ли кто-нибудь указать мне правильное направление?

ответ

1
SELECT tbl_invoices.ID, tbl_invoices.customer_id, Sum(tbl_invoices_payments.payment_amount) AS SumOfpayment_amount 
FROM tbl_invoices left outer join tbl_invoices_payments on tbl_invoices_payments.invoice_id = tbl_invoices.ID 
GROUP BY tbl_invoices.ID 
having tbl_invoices.customer_id=11; 
+0

Спасибо, Гауда, я явно усложнил ситуацию. – Rob

+0

Doh! Он выглядел многообещающим, но он не возвращает счета-фактуры, которые не имеют никаких платежей в таблице tbl_invoices_payments. Может ли запрос включать те же? – Rob

+0

попытаться использовать левое внешнее соединение, как я редактирую запрос –

-1

Я понял это с помощью Гауды.

SELECT tbl_invoices.ID, tbl_invoices.customer_id, tbl_invoices.invoice_date, tbl_invoices.invoice_net, tbl_invoices.invoice_tax, tbl_invoices.invoice_gross, Sum(tbl_invoices_payments.payment_amount) AS SumOfpayment_amount 
FROM tbl_invoices LEFT JOIN tbl_invoices_payments ON tbl_invoices.ID = tbl_invoices_payments.invoice_id 
GROUP BY tbl_invoices.ID, tbl_invoices.customer_id, tbl_invoices.invoice_date, tbl_invoices.invoice_net, tbl_invoices.invoice_tax, tbl_invoices.invoice_gross 
HAVING (((tbl_invoices.customer_id)=11)); 

спасибо.

+0

Рассмотрите возможность маркировки ответа Гуды как принятого (значок галочки рядом с кнопками голосования) вместо того, чтобы публиковать свой собственный ответ. Проводя свой собственный ответ, как это, несмотря на атрибуцию и «спасибо», можно считать грубым, и я уверен, что вы этого не хотели. «Спасибо» на сайтах Stack Exchange всегда лучше всего выражать как верхнюю и/или галочку. –

Смежные вопросы