2 つのテーブルがあります。請求書と請求書アイテム。
請求書アイテムには、各請求書のアイテムが含まれます
例えば:
invoices
----------------------------------
| id |status| net | tax | total |
----------------------------------
| 72 |paid | 100 | 120 | 220 |
| 73 |unpaid| 50 | 5 | 55 |
| 74 |paid | 400 | 45 | 445 |
| 75 |paid | 250 | 67 | 317 |
invoiceitems
-------------------------------
| invoiceid |itemdescription |
-------------------------------
| 72 | apples |
| 72 | pears |
| 72 | oranges |
| 73 | lemons |
| 73 | oranges |
ご覧のとおり、請求書番号 72 の例では 3 つの項目があります。
請求書で特定のものを検索し、特定のフィールドの数を表示したいと考えています。
しかし、私の問題は、合計値に2番目のテーブルにあるフィールドの数が掛けられているように見えることです。
$sql = "SELECT COUNT(DISTINCT invoices.id) AS num,
SUM(CASE invoices.status WHEN 'Paid' THEN 1 ELSE 0 END) AS numpaid,
SUM(CASE invoices.status WHEN 'Paid' THEN invoices.total ELSE 0 END) AS sumtotal,
FROM invoices
LEFT JOIN invoiceitems ON invoices.id=invoiceitems.invoiceid
WHERE invoices.id LIKE :invoiceid
AND IFNULL(opcinvoiceitems.itemdescription, '') LIKE :itemdescription
AND invoices.net LIKE :net
AND invoices.tax LIKE :tax
AND invoices.total LIKE :total
AND ......"
したがって、上記を使用すると、請求書 72 の合計は 3 で乗算されます。
申し訳ありませんが、これは本当に説明が下手なのはわかっていますが、他の方法で説明することはできません。何年も探していましたが、解決策が見つかりません。誰かが助けてくれることを願っています。ありがとう