帮助sql查询

时间:2011-05-10 17:11:07

标签: mysql join

我在mysql数据库中有3个表:PLAYERSSPORTSINTERESTS

PLAYERS表包含ID和播放器名称(id,player_name)

数据示例:

(1,David) 
(2,Jack)
(3,Ron)
(4,Smith)

SPORTS表包含ID和体育名称(id,sports_name)

数据示例:

(1,Soccer)
(2,Tennis)
(3,Swimming) 

每个玩家可能对多项运动感兴趣,因此INTERESTS表具有玩家ID和运动ID。 (player_id,sports_id)

数据示例:

(1,2)
(1,3)
(2,3)

我想显示那些踢足球和网球的球员的名字 不是足球或网球,而是足球和网球。

任何人都可以帮助我?

2 个答案:

答案 0 :(得分:2)

Select P.id, P.player_name
From Players As P
    Join Interests As I
        On I.player_id = P.id
    Join Sports As S
        On S.id = I.sports_id
Where S.sports_name In('Tennis','Soccer')
Group By P.id, P.player_name
Having Count( Distinct S.sports_name ) = 2

答案 1 :(得分:0)

未经测试,但我认为这样的事情可能有效:

SELECT
  player_name
FROM
  players
WHERE
  EXISTS (SELECT id FROM interests i WHERE i.player_id = players.id AND i.sports_id = 1)
  AND EXISTS (SELECT id FROM interests i WHERE i.player_id = players.id AND i.sports_id = 2)