我有两张桌子,里面有两种不同类型的发票。我需要创建一个查询来计算两个表中每个客户的发票数量。
此外,每种发票类型都有其他表格,其中包含有关发票的信息,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 行。我能做些什么来优化它吗?