0

有効期限が 30 日後にある商品の取引の詳細を提供することになっている次のクエリがあります。

SELECT *
FROM transactions T1
INNER JOIN employee T3 ON employee.id = transactions.user_id
INNER JOIN transactions T2 USING(expiry_date) WHERE T2.expiry_date >= CURDATE() AND T1.expiry_date < now() + interval 1 month

クエリを実行すると、次のエラーが表示されます。

#1054 - Unknown column 'employee.id' in 'on clause'

上記の問題を解決するにはどうすればよいですか?

4

2 に答える 2

3

テーブルのエイリアスを定義する場合は、それを使用する必要があります。旧姓は使えませんemployeeT3その時はいつも使う

SELECT *
FROM transactions T1
INNER JOIN employee T3 ON T3.id = T1.user_id
INNER JOIN transactions T2 USING(expiry_date) 
WHERE T2.expiry_date >= CURDATE() AND T1.expiry_date < now() + interval 1 month
于 2013-11-10T08:01:50.767 に答える
0

juergen dが言ったように、テーブルのエイリアスを明示的に定義すると、そのエイリアスのみを使用してテーブルを参照できます。transaction追加したいのは、クエリにの 2 番目のインスタンスを含める必要がないように思われることです。以下により、必要な結果が得られるはずです。

SELECT *
FROM transactions T1
INNER JOIN employee T3 ON employee.id = transactions.user_id
WHERE T1.expiry_date >= CURDATE() AND T1.expiry_date < now() + interval 1 month
;
于 2013-11-11T10:46:10.090 に答える