gpt4 book ai didi

mysql - 返回客户列表和平均租金金额 (Sakila)

转载 作者:行者123 更新时间:2023-11-30 00:32:11 25 4
gpt4 key购买 nike

所以我需要完成查询,但我收到此错误。我使用 MySQL 的时间不长,所以我确信这与我不了解 MySQL 的工作原理有关。

数据库:http://dev.mysql.com/doc/sakila/en/
图表:https://dev.mysql.com/doc/workbench/en/images/wb-sakila-eer.png

我主要与客户打交道、租赁、付款。

我需要一份客户列表,其中包含他们的平均租金金额以及最近的租赁/归还日期。

SELECT 
DISTINCT customer.customer_id, customer.last_name, customer.first_name,
customer.email, AVG(payment.amount) 'Average Rental',
max(rental.rental_date) 'Most Recent Rental Date',
max(rental.return_date) 'Most Recent Return Date'
FROM customer
INNER JOIN rental
ON rental.rental_id = payment.rental_id
AND customer.customer_id = rental.customer_id
INNER JOIN payment
ON payment.rental_id = rental.rental_id
AND payment.customer_id = customer.customer_id
GROUP BY customer_id
ORDER BY customer.last_name;

错误:

Error Code: 1054. Unknown column 'payment.rental_id' in 'on clause'

有人可以解释为什么它会出现此错误,即使该列存在?
另外,我该如何解决这种情况。

最佳答案

您的加入条件顺序错误。在将表包含在 from 中之前,您无法在 on 子句中引用该表。事实上,你已经重复了两次相同的条件。试试这个:

SELECT customer.customer_id, customer.last_name, customer.first_name,
customer.email, AVG(payment.amount) "Average Rental",
max(rental.rental_date) as "Most Recent Rental Date",
max(rental.return_date) as "Most Recent Return Date"
FROM customer INNER JOIN
rental
ON customer.customer_id = rental.customer_id INNER JOIN
payment
ON payment.rental_id = rental.rental_id AND
payment.customer_id = customer.customer_id
GROUP BY customer.customer_id
ORDER BY customer.last_name;

请注意,我还将列标识符的单引号更改为双引号。不要使用单引号作为标识符;这通常会导致困惑。使用双引号或反引号。

而且,我删除了 distinct 关键字。使用group by时一般不需要。

我将表名称添加到group by中。否则,您将收到不明确的列错误。

关于mysql - 返回客户列表和平均租金金额 (Sakila),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22425113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com