【问题标题】:SQL Retrieving repeated rentalsSQL 检索重复的租金
【发布时间】:2018-03-26 03:18:53
【问题描述】:

问题:

编写一个 SQL 查询来检索重复的租金,其中相同的 客户不止一次租用同一部电影。如果客户多次租用同一部电影,则输出应仅显示此(客户姓名、电影名称)组合一次

有3个表:

  • 客户表:(id、name、country、created_date)
  • 电影表:(id, title, duration, release_year)
  • 租借表:(id, customer_id, movie_id)

我目前有:

select customer.name, movie.title
from ((rental inner join customer on rental.customer_id = customer.id) inner join movie on rental.movie_id = movie.id)
group by customer.name, movie.title
having count(*) > 1;

但这是不正确的 - 有什么想法吗?

【问题讨论】:

  • 在得到答案后,请勿编辑您的问题以删除其实质内容。 SO 问题不仅针对您,还针对整个社区。​​span>

标签: mysql sql


【解决方案1】:

将您的查询重写为:

SELECT c.name, m.title
FROM rental AS r
  INNER JOIN customer AS c ON r.customer_id = c.id
  INNER JOIN movie AS m ON r.movie_id = m.id
GROUP BY c.name, m.title
HAVING count(*) > 1
;

您的JOIN 语句语法错误

编辑:为避免命名重复更改GROUP BY 语句:

GROUP BY c.id, m.id

【讨论】:

  • 有趣,我试过了,还是不正确。有两个测试用例 - 1)输出维度(13行,2列)和2)正确答案.....所以我只通过案例2,对于案例1,我得到14行,2列...... ....当我从出租 GROUP BY customer_id 中选择 customer_id、movie_id 时,movie_id HAVING count(*) > 1;我通过了这两种情况。此查询检查重复的租赁,但不检索相应的客户和电影名称和标题。有什么想法吗?我已经为表格的列添加了更多详细信息。 RENTAL 表也有一个 id 字段
  • 尝试添加SELECT c.name, m.title, COUNT(*) 并与您的计数进行比较。或者更好地使用GROUP BY c.id, m.id,因为你可以有重复的名字
  • 非常感谢!我尝试了 GROUP BY c.id、m.id 并且成功了。
  • 一般情况下你必须按你选择的东西进行分组,所以忽略编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多