0
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 は構成ファイルで静的に定義されています。)

前もって感謝します!

4

1 に答える 1