MS Access:左连接不返回左表中的所有行

时间:2017-10-28 10:22:53

标签: sql ms-access

示例数据: enter image description here

MatrixXf a

嗨,

请在上面找到包含数据和sql语句的示例表。 我想创建一份报告,向那些没有付款的学生和那些没有全额支付该月总费用(描述=总费用)的学生,包括他们当月的未付金额。

我得到的结果只显示未完全支付未付金额总费用的学生,以及在tblReceipt中没有任何记录的学生。除了总费用之外,在tblReceipt中有记​​录的学生没有出现在结果中。

请在下面找到示例结果。

Result

1 个答案:

答案 0 :(得分:1)

如果是左连接,则无法对tblReceipt进行任何过滤。

您需要先构建一个查询,以便返回相关月份中每位学生的总费用收据:

SELECT student_id, Sum(receipt_amount) AS FeeReceipts
FROM tblReceipt
WHERE [description]='Total Fee' AND [month]=[Forms]![frmDialogMonth3]![cb_Month] AND [year]=[Forms]![frmDialogMonth3]![txt_Year]
GROUP BY student_id;

我称之为MonthFeeReceipts。然后在主查询中使用它:

SELECT tblStudent.student_id, monthly_fee, book_fee, FeeReceipts, [monthly_fee]+[book_fee]-Nz([FeeReceipts],0) AS Outstanding
FROM tblStudent LEFT JOIN MonthFeeReceipts ON tblStudent.student_id = MonthFeeReceipts.student_id;