次のようなテーブルがあります。
REL_Aid_To_AttributeValue:
ID AttributeValueID
101 1319
101 1320
101 1344
101 1345
102 1319
102 1320
102 1321
102 1336
103 1320
103 1336
これらの AttributeValueID をタイプ別にグループ化した別のテーブルがあります。
TBL_AttributeValues:
AttributeValueID AttributeTypeID
1319 1
1320 1
1321 1
1336 2
1344 3
1345 3
最初のテーブルの各 ID に関する情報を提供する 3 番目のテーブルがあります。
TBL_Aids:
ID Title Author etc.
101 Aid About Spiders John Doe
102 Aid About Mites Jane Doe
103 Aid About Beetles Joe Schmo
AttributeTypeID=1 内に 1319 または (包括的) 1320 の AttributeValueID のみを含む ID (およびタイトル、作成者などの情報) の結果を返したいと考えています。したがって、AttributeType 1 には 1319 と 1320 しかないため、101 を返したいと思います。また、AttributeType 1 には 1320 しかないため、103 も返したいと思います。これも AttributeType 1 です。
私は次のことを試しました:
SELECT a.ID, a.Title, c.AttributeTypeID,
COUNT(b.AttributeValueID)AS Total
FROM TBL_Aids as a,
REL_Aid_To_AttributeValue as b,
TBL_AttributeValues as c
WHERE a.ID=b.AidID
AND b.AttributeValueID=c.ID
AND a.Status=2
AND AttributeTypeID=1
AND (b.AttributeValueID=1319
OR b.AttributeValueID=1320)
GROUP BY a.ID, a.Title,
c.AttributeTypeID
HAVING COUNT(b.AttributeValueID) <= 2
しかし、1319 と 1320 によって既に制限されており、タイプ 1 の AttributeValueID の合計ではなく、その合計をカウントしているため、結果として 102 が返されます。これを達成するには、何らかのサブクエリが必要ですか? どんな助けでも大歓迎です!どうもありがとう。