Table: assignments
=======================
|customerid |tariffid |
=======================
| 1 | 2 |
| 2 | 2 |
| 1 | 4 |
| 3 | 4 |
=======================
Table: cash
=======================
|customerid | value |
=======================
| 1 | 2 |
| 1 | 9 |
| 1 | -15 |
| 2 | -9 |
| 2 | 2 |
| 2 | 2 |
| 2 | -9 |
| 3 | 9 |
=======================
Table: customers
=================================================
| id | lastname| name | cutoffstop | deleted |
=================================================
| 1 | Doe | John | 10 | 0 |
| 2 | Foo | Jack | 10 | 0 |
| 3 | Zoo | Jenny| 20 | 0 |
| 4 | Boo | Jane | 5 | 0 |
=================================================
Table: tariffs
================
| id | value|
================
| 1 | 0 |
| 2 | 2 |
| 3 | 0 |
| 4 | 9 |
================
私は4つのテーブルを持っています。また、機能するクエリが 2 つありますが、何らかの方法でクエリをマージする必要があります。
最初のクエリは、customerid(id) - lastname - name - balance[=sum(cash.value)] の行を返します。
SELECT customers.id AS id, UPPER(lastname) AS lastname, name, SUM(cash.value) AS balance
FROM customers
JOIN cash ON customers.id = cash.customerid
WHERE deleted = 0 AND cutoffstop < 50
GROUP BY customers.id, lastname, name
HAVING SUM(cash.value) < $limit
ORDER BY lastname, name
結果の行の最初のクエリの例:
id lastname name balance
1 DOE John -4 (=2+9+-15)
2 番目のクエリでは、customerid(id) - maxdept [=sum(tariffs.value)] の行が返されます。
SELECT SUM(tariffs.value) AS maxdebt, customers.id AS id
FROM tariffs
INNER JOIN assignments ON tariffs.id = assignments.tariffid
INNER JOIN customers ON assignments.customerid = customers.id
GROUP BY id
結果の行の 2 番目のクエリの例:
id maxdept
1 11 (=9+2)
注: maxdept = $limit
さて、私が実際に欲しいのは、最初のクエリの $limit が 2 番目のクエリの結果である複合クエリです -> customerid ごとの tax.value (=maxdept) の合計です。(現在、$limit は構成ファイルで静的に定義されています。)
前もって感謝します!