Mysql表的团队,选择队长和另一名球员

时间:2018-05-17 15:19:31

标签: php mysql

我有两张桌子

|   Team    |        |   Player   |
+-----------+        +------------+
| id        |        | player_id  |
| player_id |        | player     |
| captain   |        

我有INNER JOIN players ON Team.player_id = Player.player_id

例如,显示:

  id |        player         |    captain
 ----+-----------------------+-------------
   1 |    Jeremiah Gilbert   |
   1 |    John Sidbury       |
   1 |    George Morrell     |
   1 |    William Mathiss    |       C
   1 |    John Parlement     |
   1 |    William Lester     |
   1 |    George Partick     |
   1 |    William Thornnton  |

我有数百支球队,每支球队由8名球员组成,平均每名球员可以在20支球队中,任何球员都可以成为球队的队长。

例如: 我想在team中搜索William Mathiss是队长(C),George Partick是同一团队中的玩家。在上面的示例中,他们都在团队1中。

我想把它放在PHP搜索表单中,所以我有两个字段用于播放器,另一个用于队长。

3 个答案:

答案 0 :(得分:0)

你可以试试这个:

SELECT t.id,
       p.player,
       t.captain
FROM Team t
    JOIN Player p ON (t.player_id = p.player_id)
      Where p.player = 'Player_name'
        AND t.captain = 'Captain_Name'

答案 1 :(得分:0)

我会先改变结构。 目前你有用户,团队和玩家吗?球队不应该包含球员。如果用户可以成为团队的队长,成为团队的正常成员并且同时在多个团队中,则应该为团队,用户和具有两个主表的外键的关系表创建一个表。 这样做时,您可以加入用户表两次,并由用户分别作为队长和团队成员进行过滤。你可以在不改变结构的情况下完成,但我强烈推荐。 在PHP中,您可以将PDO用于准备好的语句,制作一个" bindParam()"或" bindValue()"两次(或者只是将一个数组传递给" execute()"但是你不能先验证数据类型。)

答案 2 :(得分:0)

这就是我想要在团队中找到相同的两名球员,现在我只需要为其中一名球员添加属性队长。

SELECT DISTINCT
    a.id,
    b.player,
    c.player
FROM
    Team a 
        JOIN player b ON a.player_id=b.player_id
        JOIN Team d
        JOIN player c ON d.player_id=c.player_id
WHERE
     b.player = 'Player one' AND c.player = 'Player two'