0

私の悪い英語でごめんなさい。値 evalWaarde 3 を持ち、同時に agLkrid 1、293​​5、および 2932 に属している必要があるすべてのレコードを取得する必要があります。(1,2932,2935) の agLkrid は適切なソリューションではないことはわかっています。しかし、私は別のものを見つけません。つまり、実際にはレコードは 1 つだけです: WJLUITV015

a.agclid = e.evalclid and 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 WJLUITV935 3

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

そのテーブルのフィールドに一意の制約がある場合は、DISTINCT必要ありません。COUNT

そしてJOIN、その他のWHERE基準についてはわかりません-それはあなたにとって正しく機能していて、あなたの質問はagLkridに関するものだったと思います.

これは、単一の結果を返すテーブルが 1 つだけの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 に答える