【问题标题】:PHP(SQL) select name where id = more valuesPHP(SQL) 选择名称,其中 id = 更多值
【发布时间】:2015-04-17 12:52:27
【问题描述】:

我有表ma​​tch(其中包含“id, date, team1_id, team2_id”)

和表team(其中包含“id, name”)

我需要 PHP 或 SQL 代码来显示团队名称(来自表团队)WHERE "team1_id"team2_id" = team.id

...其实我有这样的:

$deleteMatch = Database::query('SELECT match.id, match.team1_id, match.date, 
       team.id, team.name FROM `match`, `team` WHERE team.id = match.team1_id');
foreach($deleteMatch as $matchinfo)
{
    ?><option value="<?php echo $matchinfo["id"];?>">
    <?php echo $matchinfo["date"]; echo $matchinfo["name"];?></option>
    <?php
}           

但我需要在 foreach 中添加 team2.id(name)。 (日期 | 团队 1 名称 | 团队 2 名称)

希望你能理解我。感谢您的帮助。

【问题讨论】:

  • 对不起,比赛真的可以在同一支球队之间进行吗?我猜你的意思是 OR 而不是 AND。

标签: php mysql sql


【解决方案1】:

使用这个查询:

SELECT match.id, match.team1_id, match.date, 
  t1.id as team1ID, t1.name as team1Name, 
   match.team2_id,t2.id as team2ID, t2.name as team2Name 
 FROM `match` JOIN `team` t1 ON t1.id = match.team1_id 
  JOIN `team` t2 ON t2.id = match.team2_id

SQLFiddle.

【讨论】:

    【解决方案2】:
    $deleteMatch = Database::query('SELECT `match`.id, `match`.team1_id, `match`.date, `team`.id, `team`.name FROM `match` JOIN `team` ON `team`.id = `match`.team1_id' LEFT JOIN `team` ON `team`.id = `match`.team2_id);
    foreach($deleteMatch as $matchinfo)
    {
    ?><option value="<?php echo $matchinfo["id"];?>"><?php echo $matchinfo["date"]; echo $matchinfo["name"];?></option>
    <?php
     }   
    

    【讨论】:

      【解决方案3】:

      我会在团队表上使用 2 个内部连接来执行此操作:

      $query = "SELECT match.*, team.* FROM match
                INNER JOIN team ON match.team1_id = team.id
                INNER JOIN team ON match.team2_id = team.id;"
      

      表格应如下所示:

      match.id |比赛日期 | team1_team.name | team2_team.name

      【讨论】:

        【解决方案4】:

        你可以试试这个 SQL 查询:

        SELECT match.id, date, t1.name AS team1, t2.name AS team2
        FROM match, team AS t1, team AS t2
        WHERE team1_id=t1.id AND team2_id=t2.id
        

        诀窍是您需要将每个团队 ID 与其名称分别匹配,因此您必须包含两次团队表。为了区分这两个表,您可以借助 AS 关键字使用别名(在示例中,我分别将表别名为 t1 和 t2)

        结果表将有 4 列:id(比赛 id)、date、team1(团队 1 的名称)和 team2(团队 2 的名称),因此您可以使用 $matchinfo["team1"]$matchinfo["team2"] 在你的 php 代码。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-03-23
          • 2011-12-10
          • 2012-09-22
          • 1970-01-01
          • 2011-07-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多