La query non mostra un risultato se esiste una riga con la funzione Sum ()
-
27-10-2019 - |
Domanda
Sto cercando di creare un programma di accesso per ufficio per monitorare i miei dipartimenti.
Ho una tabella che contiene quanto devo a qualcuno di nome tbl_depts.
Ho un'altra tabella che contiene i miei pagamenti denominati TBL_payments.
Ecco la mia sintassi:
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;
Ma c'è un problema. Se c'è un solo pagamento per un reparto, query che mostra vuoto. Ma questa query funziona perfettamente se c'è due pagamenti per quel reparto.
Cosa dovrei fare?
Soluzione
Che ne dici di usare Sinistra uni, quando si usa Unisciti interni Assicurati Dept_id esiste su entrambi i tavoli.
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]);
Altri suggerimenti
La tua domanda sopra non corre anche: il raggruppamento è sbagliato. Questo funziona:
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];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow