0

对不起,我的英语不好。我必须检索所有值为 evalWaarde 3 的记录,同时它们必须同时属于 agLkrid 1、293​​5 和 2932。我知道 (1,2932,2935) 中的 agLkrid 不是一个好的解决方案但我没有找到另一个。所以实际上只有一条记录:WJLUITV015 有帮助吗?

SELECT agClid, aglkrid, evalWaarde FROM Agenda2 作为 JOIN evaluaties2 作为 e ON a.agclid = e.evalclid 和 agLkrid = evallkrid WHERE(agSchoolid='18' and agclid like 'WJLUI%' and agLkrid in (1,2932,2935)和 agDatum >= '2013/01/01' 和 agDatum <= '2013/02/12' AND (evalWaarde = 3)) 按 agclid、aglkrid、evalWaarde 分组

agClid agLkrid evalWaarde WJLUIAT005 1 3 WJLUIBV005 1 3 WJLUIDV010 1 3 WJLUIDV030 1 3 WJLUITV015 1 3 WJLUIBV005 2932 3 WJLUITV015 2932 3 WJLUITV015 2935 3 WJLUITV02

4

1 回答 1

0

我想你想要这样的东西使用GROUP BYand HAVING

SELECT agClid, evalWaarde 
FROM agenda2 as a 
    JOIN evaluaties2 as e 
        ON a.agclid = e.evalclid and agLkrid = evallkrid 
WHERE agSchoolid='18' 
    and agclid like 'WJLUI%' 
    and agLkrid in (1,2932,2935) 
    and agDatum >= '2013/01/01' 
    and agDatum <= '2013/02/12' 
    AND evalWaarde = 3
GROUP BY agclid, evalWaarde
HAVING COUNT(DISTINCT agLkrid) = 3

如果该表中的这些字段存在唯一约束,则不需要DISTINCTin 。COUNT

而且我不确定JOIN其他WHERE标准——我假设这对你来说是正确的,你的问题是关于 agLkrid 的。

这是一个只有一个表返回单个结果的SQL Fiddle 。还有那个查询:

SELECT agClid, evalWaarde 
FROM agenda2 
WHERE agclid like 'WJLUI%' 
    and agLkrid in (1,2932,2935) 
    AND evalWaarde = 3
GROUP BY agclid, evalWaarde
HAVING COUNT(DISTINCT agLkrid) = 3

这将返回 WJLUITV015。

于 2013-02-12T16:13:36.500 回答