前回の問題の補足として、データベースに 2 つのテーブルがあり、特定の情報を抽出したいと考えています。以下の表:
(player): player_id (primary), playerName
(match): match_id (primary), playerID1, playerID2, playerID3, scorer etc..
プレイヤーの名前を取得するために、次のコードを提供していただきました。
SELECT p.Name
FROM `match` m
INNER JOIN `player` p
ON p.player_id IN (m.playerID1, m.playerID2, m.playerID3) //etc
おかげで美しく動作します - 私がしたいのは2つの調整だけです:
- スコアラーの名前とプレーヤーの名前を返したいと思います。m.scorer は ID であるため、p.Name が既に m.playerID にマップされている場合、p.Name 属性にマップするにはどうすればよいですか?
- 上記のクエリは、すべてのプレーヤーの名前を返します。特定のプレーヤーのすべての試合を検索する検索機能をまもなく追加します。結果からそのプレーヤーを除外する方法はありますか (このプレーヤーが検索されたときに、このプレーヤーが試合に参加していたことは既にわかっているため)。そのため、ほぼすべての試合と特定のプレーヤーの仲間のプレーヤーを返しますが、実際に検索されたプレーヤーは結果から除外します。これが不明な場合は申し訳ありませんが、お知らせください。詳しく説明します。