Я должен найти имя максимального забившего гол и забитых голов.
GOAL_DETAILS(GOAL_ID,PLAYER_ID,TEAM_ID,GOAL_TIME)
PLAYER_MAST(PLAYER_ID,PLAYER_NAME)
Я сделал это, используя join
, но не смог сделать это с помощью подзапроса.
Пожалуйста, помогите.
1-й подход:
SELECT PLAYER_ID,
PLAYER_NAME
FROM PLAYER_MAST
WHERE PLAYER_ID IN ( SELECT PLAYER_ID,
COUNT(PLAYER_ID)
FROM GOAL_DETAILS
GROUP BY PLAYER_ID
HAVING COUNT(PLAYER_ID)=(SELECT MAX(COUNT(*))
FROM GOAL_DETAILS
GROUP BY PLAYER_ID)
);
2-й подход:
SELECT PLAYER_ID,
PLAYER_NAME
FROM PLAYER_MAST
WHERE PLAYER_ID IN (SELECT PLAYER_ID,
COUNT(PLAYER_ID)
FROM GOAL_DETAILS
GROUP BY PLAYER_ID
HAVING COUNT(PLAYER_ID)=MAX(COUNT(PLAYER_ID))
);
3-й подход:
SELECT PLAYER_ID,
PLAYER_NAME
FROM PLAYER_MAST
WHERE PLAYER_ID IN (SELECT PLAYER_ID,
MAX(COUNT(*))
FROM GOAL_DETAILS
GROUP BY PLAYER_ID
) ;
Я знаю, что они будут печатать только имена, а не общее количество забитых голов, но они даже не будут печатать имена.
Где я делаю это неправильно?