2 種類の請求書を保持する 2 つのテーブルがあります。両方のテーブルからクライアントごとの請求書の数をカウントするクエリを作成する必要があります。
また、各請求書タイプには、JOIN ステートメントが各 SELECT ステートメントに追加された請求書に関する情報を保持する他のテーブルがあります。ただし、2 つのテーブルは詳細な請求テーブルを共有していません。
これがスキーマの外観です。invoiceA は、serviceInvoice およびinvoiceDetail と関係があります。請求書 B には、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 を持つ行があります。これを最適化するためにできることはありますか?