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

如果为表定义别名,则必须使用它。您不能再使用旧名称employee了。T3然后总是使用

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查询中包含第二个实例。以下内容应为您提供所需的结果:

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 回答