Запрос не показывает результат, если есть одна строка с функцией Sum () - PullRequest
0 голосов
/ 03 декабря 2011

Я пытаюсь создать программу Office Access для отслеживания своих средств.

У меня есть таблица, в которой указано, сколько я должен кому-то по имени tbl_depts.

У меня есть еще одна таблица с моими платежами с именем tbl_payments.

вот мой синтаксис:

SELECT DISTINCTROW
    tbl_depts.who,
    tbl_depts.dept,
    Sum(tbl_payments.payment) AS [Paid],
    (tbl_depts.dept - [Paid]) AS remaining
FROM tbl_depts INNER JOIN tbl_payments ON tbl_depts.[ID] = tbl_payments.[dept_ID]
GROUP BY tbl_depts.who;

Но есть проблема. Если для отдела есть только один платеж, запрос отображается пустым. Но этот запрос отлично работает, если есть два платежа за этот отдел.

Что мне делать?

Ответы [ 2 ]

0 голосов
/ 01 января 2012

как насчет использования LEFT JOIN , при использовании INNER JOIN убедитесь, что dept_ID существует в обеих таблицах.

SELECT DISTINCTROW
    tbl_depts.who,
    tbl_depts.dept,
    Sum(tbl_payments.payment) AS [Paid],
    (tbl_depts.dept - [Paid]) AS remaining
FROM tbl_depts LEFT JOIN tbl_payments 
     ON tbl_depts.[ID] = tbl_payments.[dept_ID]
GROUP BY tbl_depts.who, tbl_depts.dept, (tbl_depts.dept - [Paid]);
0 голосов
/ 01 января 2012

Ваш запрос выше даже не запустится - группировка неверна.Это работает:

SELECT tbl_depts.ID, tbl_depts.who, tbl_depts.dept, Sum(tbl_payments.payment) AS paid, [dept]-[payment] AS remaining
FROM tbl_payments INNER JOIN tbl_depts ON tbl_payments.dept_ID = tbl_depts.ID
GROUP BY tbl_depts.ID, tbl_depts.who, tbl_depts.dept, [dept]-[payment];
...