0
私のテーブルは以下の通りです:t1(name、date、sold); t2(名前、日付、買った);'WHERE'句の 'FROM'で宣言されたテーブルのエイリアスの使い方は?
私のクエリは次のとおりです。
SELECT *
FROM (SELECT * FROM t1
UNION ALL
SELECT * FROM t2) AS tRes
WHERE
date < DATE_ADD(DATE_ADD((SELECT MAX(date) FROM tRes), INTERVAL -DAY((SELECT MAX(date) FROM tRes)) + 1 DAY), INTERVAL -2 MONTH);
すなわち、私はtResの最大日付より2ヶ月ではない日付の行を受け取ろうとしています - 2007-12-03が組合の最大日付である場合、結果の日付は2007-10-01より小さくなければなりません。
「tRes does not exist」(1146)というエラーが表示されます。これは単純化されたバージョンのクエリです。実際、tRes宣言にはたくさんのコードがありますので、以下のselectの宣言をコピーすることはできません。 ここで何ができますか?私は 'WHERE'節に表示されているユニオンのエイリアスを宣言したいと思います。
[MySQLのクエリの句がエラーを生成しますWHEREで列の別名を使用する]の可能複製(http://stackoverflow.com/questions/942571/using-column-:だから、1つの解決策は、ロジックを繰り返すことですalias-in-where-clause-of-mysql-query-produced-an-error) –