Mysql でサブクエリを理解するのに苦労しています。かなり単純なものは問題ありません。私が見つけたほとんどのチュートリアルは、典型的なものを超えることはめったにありません。
SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);
私がデータベースから引き出そうとしているのは次のとおりです(私たちのデータベースの背景なしでこれを説明するために最善を尽くします):
特定の担当者に属する顧客のリストと、先月の合計支出額 (1 つの列) と、1 か月間の支出額 (別の列) を取得します。
結果として、これはおおよそ次のようになります。
ID | NAME | PREV MONTH | CUR MONTH
1 | foobar | £2300 | £1200
2 | barfoo | £1240 | £500
データの最初の部分を取得するために使用しているクエリは次のとおりです。
SELECT c.id,c.name, SUM(co.invoicetotal) as total
FROM customers as c
JOIN customerorders as co on co.customer_id = c.id
WHERE c.salesrep_id = 24
AND co.orderdate BETWEEN DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND CURDATE()
GROUP by c.id
order by total desc
DATE_SUB は実際の日付に置き換えることができます。これは、最終的に PHP 変数がここに移動するためです。例として、これは有効なデータを提供します。
これにより、たとえば次のようになります。
ID | NAME | TOTAL
1 | foobar | £2300
2 | barfoo | £1240
したがって、理想的には、私のサブクエリはこれとまったく同じクエリですが、日付が変更されています。エラーが発生し続け#1242 - Subquery returns more than 1 row
ます。
提案やアドバイスをお願いします。
前もって感謝します。ロブ