选择拥有> 1名西班牙球员的球队

时间:2019-02-17 11:51:13

标签: sql oracle select subquery

我知道这对于StackOverflow社区是一个非常简单的问题。但是我在其他网站上都没有在StackOverflow上找到我的问题的答案。

让我解释一下这个问题。

我希望查询选择其中有1名以上西班牙球员的球队。

这些是团队(装备)和玩家(jugadores)表:https://imgur.com/a/7BNqfmu

我的查询:

SELECT
    nombre
FROM
    equipos
WHERE
    id IN (
        SELECT
            id_equipo
        FROM
            jugadores
        WHERE
            upper(procedencia) = 'SPAIN'
    )
GROUP BY nombre
HAVING COUNT(*) > 1;

查询没有返回任何内容,但是当我执行测试查询以检查是否有超过1名西班牙球员的球队时,我会得到1名拥有2名西班牙球员的球队,因此我希望能在上面获得该球队查询。

测试查询返回具有2个西班牙球员的球队:

SELECT
    j.nombre,
    e.nombre AS equipo
FROM
    jugadores j
JOIN equipos e ON j.id_equipo = e.id
WHERE
    upper(procedencia) = 'SPAIN';

返回值:

Jorge Garbajosa Raptors
Jose Calderon   Raptors
Sergio Rodriguez    Trail Blazers
Pau Gasol   Lakers
Juan Carlos Navarro Grizzlies

您可以看到猛龙队有2个西班牙球员。 我的初始查询中一定缺少某些内容。我不确定我是否有条款。

2 个答案:

答案 0 :(得分:2)

您可以尝试使用具有having子句的以下查询

SELECT
    e.nombre AS equipo
FROM
    jugadores j
JOIN equipos e ON j.id_equipo = e.id
WHERE upper(procedencia) = 'SPAIN'
GROUP BY upper(procedencia), e.nombre
HAVING COUNT(j.nombre)>1;

答案 1 :(得分:2)

如果GROUP BYHAVING子查询中,您的版本将起作用:

SELECT e.nombre
FROM equipos e
WHERE e.id IN (SELECT j.id_equipo
               FROM jugadores j
               WHERE upper(procedencia) = 'SPAIN'
               GROUP BY j.id_equipo
               HAVING COUNT(*) > 1;
              );