動作していない複数のHavings
-
27-09-2019 - |
質問
私は、次のスキーマを使用してデータベースを持っています:
ID PositionId LeagueId 1 4 5 3 4 5 3 8 5 4 1 6
私はAccessでこのSQLクエリを持っています:
SELECT lp.PositionId
FROM Leagues l
INNER JOIN Lineups lp ON (l.LeagueID = lp.LeagueId)
GROUP BY PositionId
HAVING sum(iif(lp.PositionId = 4,1,0)) > 1 AND sum(iif(lp.PositionId = 8,1,0)) > 0
私が唯一持って、すなわちの左側を使用する場合:
HAVING sum(iif(lp.PositionId = 4,1,0)) > 1
私は1つの結果(LeagueId 5)を取得します。
:私が持つ、すなわちの右側を使用している場合 HAVING sum(iif(lp.PositionId = 8,1,0)) > 0
私は、1つの結果(LeagueId 5)を取得しますが、両方一緒には(上記のように)何の結果が得られません。
解決
SUMは、両方のHAVINGの述部を満たすように使用してみてくださいすることができないため、
あなたの問題があるORます:
SELECT lp.PositionId
FROM Leagues l
JOIN Lineups lp ON (l.LeagueID = lp.LeagueId)
GROUP BY PositionId
HAVING SUM(iif(lp.PositionId = 4,1,0)) > 1 OR SUM(iif(lp.PositionId = 8,1,0)) > 0
他のヒント
あなたはpositionidによってグループ分けではないされていますか?したがって、各positionidのためにあなたは、idが同時に4と8のとき> 0であることをそのpositionidのための合計を求めています。これは可能ですか?あなたは、ORをしたいですか?あなたは、別のクエリを使用する必要がありますか。
GROUP BY LeagueID
、例えば?
このクエリ例えばの多くの簡略化されたバージョンを書くことができます。
SELECT DISTINCT 8 AS PositionId
FROM Lineups
WHERE PositionId = 8
UNION ALL
SELECT DISTINCT 4
FROM Lineups
WHERE PositionId = 4
HAVING COUNT(*) > 1;
所属していません StackOverflow