質問

私は、次のスキーマを使用してデータベースを持っています:

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;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top