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



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

让我解释这个问题。

我希望查询以超过1个西班牙球员的方式选择团队。

那些是团队(Equigos)和球员(Jugadores)表:https://i.stack.imgur.com/qmc0j.jpg

我的查询:

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名西班牙球员。我必须在最初的查询中缺少一些东西。我不确定我的有子句tbh。

您可以在下面尝试使用子句

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;

如果GROUP BYHAVING subquery 中:

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;
              );

最新更新