MAccessic 搜索不一致的记录
MSaccess search inconsistent records
我有一个包含 InvoiceNAME、InvoiceSUM 列的 table INVOICES 和一个包含 InvoiceNAME、ItemNAME、ItemPRICE 和 ItemQTY 列的其他 INVOICEitems。通过 InvoiceNAME 字段连接的表。
我想要 select INVOICES table 中的所有行,其中 InvoiceSUM 不等于与 InvoiceNAME 相关的 ItemPRICE*ItemQTY 的总和。换句话说,我想列出不一致的记录,其中 InvoiceSUM 不等于项目总数。
一种方法使用相关子查询:
select i.*
from invoices as i
where i.invoicesum <> (select sum(ii.price * ii.quantity)
from INVOICEitems as ii
where ii.InvoiceNAME = i.InvoiceNAME
);
您可能还想在结果集中显示订单项的值。如果是这样,加入更合适:
select i.*, ii.item_sum
from invoices as i
inner join (
select invoice_name, sum(item_qty * item_price) as item_sum
from invoice_items
group by invoice_name
) as ii on ii.invoice_name = i.invoice_name
where i.invoice_sum <> ii.item_sum
我有一个包含 InvoiceNAME、InvoiceSUM 列的 table INVOICES 和一个包含 InvoiceNAME、ItemNAME、ItemPRICE 和 ItemQTY 列的其他 INVOICEitems。通过 InvoiceNAME 字段连接的表。
我想要 select INVOICES table 中的所有行,其中 InvoiceSUM 不等于与 InvoiceNAME 相关的 ItemPRICE*ItemQTY 的总和。换句话说,我想列出不一致的记录,其中 InvoiceSUM 不等于项目总数。
一种方法使用相关子查询:
select i.*
from invoices as i
where i.invoicesum <> (select sum(ii.price * ii.quantity)
from INVOICEitems as ii
where ii.InvoiceNAME = i.InvoiceNAME
);
您可能还想在结果集中显示订单项的值。如果是这样,加入更合适:
select i.*, ii.item_sum
from invoices as i
inner join (
select invoice_name, sum(item_qty * item_price) as item_sum
from invoice_items
group by invoice_name
) as ii on ii.invoice_name = i.invoice_name
where i.invoice_sum <> ii.item_sum