3

次の表があります(簡単にするために他の表は省略しています)。1 はすべての人に、2 はその人たちがするスポーツに。私はphpを使用して、ユーザーが人のリストを表示できるようにしています。人の名前やプレーしているスポーツでフィルタリングできます。ですから、野球やサッカーなどをしているすべての人を見ることができるようにしたいと思っています。

create table people (
  id int,
  name varchar(50)
  );

create table people_to_sports (
  personID int,
  sportID int,
  primary key(personID,sportID)
  );

基本的に私の質問は、たとえば、スポーツ 1 とスポーツ 2 をプレイするすべての人のリストを取得するために people_to_sports を使用するにはどうすればよいですか?

ここに sqlfiddle があります。

ありがとうございました!

4

2 に答える 2

5
SELECT
  personID
FROM
  people_to_sports
WHERE
  sportID IN (1, 2)
GROUP BY
  personID
HAVING
  COUNT(*) = 2
于 2012-09-17T14:17:56.753 に答える
1
SELECT personID, COUNT(personID) AS cnt
FROM people_to_sports
WHERE sportID IN (1, 2)
GROUP BY personID
HAVING cnt = 2
于 2012-09-17T14:18:13.060 に答える