sql - 我该如何编写这个该死的 SQL 查询?

标签 sql activerecord ruby-on-rails-3.1

我是一个相对 SQL 爱好者,渴望学习,但我需要一些帮助来组合查询。如果有人能引导我走向正确的方向,我将不胜感激。

该表是团队排名。各列如下:

score | qualities_id | team_id | year | source

根据特定年份的不同素质对团队进行评分。请注意,可以为给定团队分配多个分数(每个分数都来自不同的来源)。同样,特定团队在特定年份可能根本没有任何得分。

问题是这样的:

给定一个质量和一个团队列表,我想找到一个列表,其中每个团队都至少有一个分数。

我是从 Rails (3.1) 开始解决这个问题的,我可以使用 Active Record 和多个数据库调用以一种愚蠢的方式做到这一点。但我希望能够用纯 SQL 来完成。 Active Record 中仅限一次数据库调用的帮助奖励积分。

非常感谢

最佳答案

以下是您有 6 个团队的情况的示例。您在 HAVING 子句中测试的值(在我的示例中为 6)应与 IN 子句中包含的 team_ids 数量相匹配。

SELECT year
    FROM TeamRankings
    WHERE qualities_id = 1
        AND team_id IN (4,8,15,16,23,42)
    GROUP BY year
    HAVING COUNT(DISTINCT team_id) = 6;

关于sql - 我该如何编写这个该死的 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8097358/

相关文章:

php - 如何在 LIMIT 子句中应用 bindValue 方法?

mysql - 如何使选择查询适合空条件而不是空条件

sql - Sybase SQL Select Distinct 基于具有 ID 的多列

ruby - 来自自定义 sql 查询的 activerecord 类

mysql - :first, :order in Rails 3? 的正确查找语法

尽管覆盖索引,MySQL MyISAM 慢 count() 查询

ruby-on-rails - Rails 关联范围中左连接的子查询

ruby-on-rails - 渲染部分 Assets

ruby-on-rails - state_machine vs aasm gems在Rails 3.2上的应用程序 ruby

ruby-on-rails - 仅当用户在 root_path 上时才在登录后重定向用户