SELECT Opponent, JerseyNumber, A
FROM (SELECT * FROM Games_t INNER JOIN GameStats_t ON Games_t.GameID=GameStats_t.GameID)
WHERE A >=1 AND COUNT(Opponent) >3;
我正在尝试返回至少有三名球员录制一个或多个助攻的比赛。如果我没有AND COUNT(Opponent) >3
,那么查询几乎会返回我想要的内容,但是有一些游戏中只有三个玩家记录了协助。
答案 0 :(得分:1)
使用以下查询。
SELECT G_TEMP.GAME_ID, GT.OPPONENT, GT.JERSEYNUMBER, G.A FROM
(
SELECT GAME_ID, COUNT(OPPONENT) OPP_COUNT FROM GAMESTATS_T
HAVING COUNT(OPPONENT) > 3
GROUP BY GAME_ID
) G_TEMP
LEFT OUTER JOIN
GAMES_T G
ON
G.GAME_ID = G_TEMP.GAME_ID
AND G.A > 1
INNER JOIN
GAMESTATS_T GT
ON
G.GAME_ID = GT.GAME_ID
注1:当有多个表时,最好使用tablename_alias.field_name
语法指定字段。这是一个很好的做法,但它是可选的。
例如 ,如果表TABLEA具有字段FIELDA1,FIELDA2,FIELDA3,并且表TABLEB具有字段FIELDB1,FIELDB2
然后您可以将查询用作:
SELECT A.FIELDA1, A.FIELDA3, B.FIELDB2
FROM TABLEA A JOIN TABLEB B ON A.FIELDA2 = B.FIELDB2
答案 1 :(得分:1)
试试这个:
SELECT Opponent,
JerseyNumber,
A,
COUNT(Opponent) FROM
(
SELECT *
FROM Games_t INNER JOIN GameStats_t
ON Games_t.GameID=GameStats_t.GameID
)
WHERE A >=1
GROUP BY Opponent, JerseyNumber, A
HAVING COUNT(Opponent) >3
答案 2 :(得分:0)
在查询中使用HAVING
部分在查询完成后使用一些参数:
SELECT Opponent, JerseyNumber, A
FROM (SELECT * FROM Games_t INNER JOIN GameStats_t ON Games_t.GameID = GameStats_t.GameID)
WHERE A >=1 HAVING COUNT(Opponent) > 3;