Sql 从两个结果中获取交点

Sql 从两个结果中获取交点,sql,Sql,嘿,我正试图说出utover.navn的名字,那些有“卡尔·刘易斯”作为对手的人。我想从“卡尔·刘易斯”所在的exercisedeltakelse.ovelse和所有其他人之间的交叉点询问姓名和id。我应该得到一个答案,但我什么也得不到。有人有什么想法吗 因为我还不能回答我自己,所以我正在编辑这个。在这里,我看到每个人都是“卡尔·刘易斯”的对手,但不是只有“卡尔·刘易斯”作为对手的人。 希望我这样做没问题。INTERSECT返回两个查询中存在的任何值,但是您的第一个查询选择了utover.sta

嘿,我正试图说出utover.navn的名字,那些有“卡尔·刘易斯”作为对手的人。我想从“卡尔·刘易斯”所在的exercisedeltakelse.ovelse和所有其他人之间的交叉点询问姓名和id。我应该得到一个答案,但我什么也得不到。有人有什么想法吗

因为我还不能回答我自己,所以我正在编辑这个。在这里,我看到每个人都是“卡尔·刘易斯”的对手,但不是只有“卡尔·刘易斯”作为对手的人。
希望我这样做没问题。

INTERSECT返回两个查询中存在的任何值,但是您的第一个查询选择了utover.startnr,这在第二个查询中从未出现过,因此您的结果集将始终为空。

也许重新编写连接将帮助您发现问题

SELECT DISTINCT utover.startnr, utover.navn, ovelse.navn
FROM utover, ovelse
WHERE ovelse.navn in (
SELECT DISTINCT ovelse.navn
FROM utover, deltakelse, ovelse
WHERE utover.navn = 'Carl Lewis'
AND deltakelse.utover = utover.startnr
AND deltakelse.ovelse = ovelse.navn
GROUP BY ovelse.navn, utover.startnr

INTERSECT

SELECT DISTINCT ovelse.navn
FROM utover, deltakelse, ovelse
WHERE utover.navn <> 'Carl Lewis'
AND deltakelse.ovelse = ovelse.navn
AND deltakelse.utover = utover.startnr
GROUP BY ovelse.navn, utover.startnr
);

+1用于尝试解决问题。请详细说明您希望输出什么。我希望输出一个人的名字“Andreas Kvaale”。我找到了一种方法,让每个人都做了与我要求的相同的练习,但不是唯一一个只有他作为对手的练习选择DISTINCT utover.startnr,utover.navn,ovelse.navn来自utover,ovelse where ovelse.navn来自于utover,deltakelse,ovelse,其中utover.navn='Carl Lewis'和deltakelse.utover=utover.startnr和deltakelse.ovelse=ovelse.navn组由ovelse.navn、utover.startnr相交,从utover、deltakelse中选择不同的ovelse.navn,ovelse,其中utover.navn‘卡尔·刘易斯’和deltakelse.ovelse=ovelse.navn和deltakelse.utover=utover.startnr组由ovelse.navn、utover.startnr组成;请在答案部分添加您的答案,这将对每个人都有帮助。我不能回答我自己的问题,因为我的声誉低于10
SELECT utover.startnr, utover.navn
FROM utover
WHERE
    EXISTS (SELECT 1
        FROM
            (ovelse AS ovelse2 INNER JOIN deltakelse AS deltakelse2 ON
                deltakelse2.ovelse = ovelse2.navn
            ) INNER JOIN utover AS utover2 ON
                utover2.startnr = deltakelse2.utover
        WHERE
            ovelse2.navn = utover.navn AND
            utover2.navn = 'Carl Lewis'
    ) AND
    EXISTS (SELECT 1
        FROM
            (ovelse AS ovelse3 INNER JOIN deltakelse AS deltakelse3 ON
                deltakelse3.ovelse = ovelse3.navn
            ) INNER JOIN utover AS utover3 ON
                utover3.startnr = deltakelse3.utover
        WHERE
            ovelse3.navn = utover.navn AND
            utover3.navn <> 'Carl Lewis'
    )