我在mysql数据库中有3个表:PLAYERS
,SPORTS
和INTERESTS
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)
我想要显示球员的名字,那些踢足球和网球的人。
不是足球或网球,而是足球和网球。
发布于 2011-05-11 01:18:24
未经测试,但我认为这样的方法可能会起作用:
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)
发布于 2011-05-11 01:19:17
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
https://stackoverflow.com/questions/5953764
复制相似问题