0

我有两张桌子,里面有两种不同类型的发票。我需要创建一个查询来计算两个表中每个客户的发票数量。

此外,每种发票类型都有其他表格,其中包含有关发票的信息,JOIN 语句添加到每个 SELECT 语句中。但是这两个表不共享任何详细的发票表。

所以这就是模式的样子:invoiceA 与 serviceInvoice 和 invoiceDetail 有关系。invoiceB 与 packageInvoice 和 supportInvoice 有关系。

我没有包含任何 JOIN,但这是我的查询的粗略概念。

SELECT
    i.client_id, COUNT(i.invoice_num)
FROM 
(
    SELECT client_id, invoice_num, cff_num FROM invoiceA
    UNION
    SELECT client_id, invoice_num, cff_num FROM invoiceB
)i
WHERE
    i.cff_num IS NULL
GROUP BY
    i.client_id

这个查询看起来很奇怪而且效率低下,我想在 invoiceB 上做一个 LEFT JOIN,但是两个表中都有相同的 client_id 行。我能做些什么来优化它吗?

4

1 回答 1

0

将其存储在视图中,您可以随时从中选择:

SELECT
    client_id,
    COUNT(*) AS 'count'
FROM invoiceA
WHERE
    cff_num IS NULL
GROUP BY
    client_id

UNION

SELECT
    client_id,
    COUNT(*) AS 'count'
FROM invoiceB
WHERE
    cff_num IS NULL
GROUP BY
    client_id
于 2012-11-16T03:19:01.567 回答