【问题标题】:Query multiple tables - display Team Name based on Team ID查询多个表 - 根据 Team ID 显示 Team Name
【发布时间】:2015-01-16 18:41:21
【问题描述】:

我的表结构是

`TblTeam` (`TeamID`, `TeamName`) VALUES
(1,'India'),
(2,'Pakistan'),
(3,'Brazil')
(4,'Poland');

`TblMatch` (`MatchID`, `MatchDate`, `MatchStart`, `MatchEnd`, `Team1ID`, `Team2ID`) VALUES
(1, '19-11-2014', '12:00:00', '13:00:00', 1, 2),
(2, '19-11-2014', '13:10:00', '14:10:00', 4, 3),
(3, '19-11-2014', '14:20:00', '15:20:00', 1, 3),
(4, '19-11-2014', '15:30:00', '16:30:00', 4, 2),
(5, '20-11-2014', '10:00:00', '11:00:00', 1, 4),
(6, '20-11-2014', '11:10:00', '12:10:00', 3, 4);

插入TblScoreScoreIDTeamIDMatchIDScore)值 (1, 1, 1, 5), (2, 2, 1, 6), (3, 4, 2, 15), (4, 3, 2, 26);

我想显示 (Team1ID, Team2ID) 的团队名称,比如 2014 年 11 月 19 日有 4 场比赛,所以

在 php 中的输出应该是 时间:之间: 12:00:00 - 13:00:00 印度对巴基斯坦 13:10:00 - 14:10:00 波兰 v/s 巴西
SELECT m.MatchID, m.MatchDate, m.MatchStart, m.MatchEnd, m.Team1ID, m.Team2ID, 
t.TeamID, t.TeamName 
FROM TblMatch m, TblTeam t WHERE m.MatchDate ='$todayis' ORDER BY m.MatchDate

PHP

while($row=mysqli_fetch_array($res)){
    $mid= $row['MatchID'];
    $mdd = $row['MatchDate'];
    $t1 = $row['Team1ID'];
    $t2 = $row['Team2ID'];
    $t1n = $row['TeamName']; 


    echo $t1n . " v/s  . " $t1n ;



 }

Score query does not work 

 $query="SELECT 
 m.MatchID, 
 m.MatchDate, 
 m.Team1ID, 
 m.Team2ID, 
 s.TeamID,
 s.MatchID,
 T1.TeamName as TeamName1, 
 T2.TeamName as TeamName2,
 T1S.Score as Team1Score,
 T2S.Score as Team2Score
 FROM TblMatch m  JOIN TblTeam T1  ON m.Team1ID = T1.TeamID JOIN TblTeam T2  ON m.Team2ID =      T2.TeamID  JOIN TblScore s ON m.Team1ID = T1S.TeamID JOIN TblScore s ON m.Team1ID = T1S.TeamID  JOIN   TblScore s ON m.Team2ID = T2S.TeamID WHERE s.MatchID=$mid
 ";

【问题讨论】:

  • 您必须加入团队表两次。

标签: php mysql while-loop


【解决方案1】:

查询:

SELECT  
    m.MatchStart, 
    m.MatchEnd, 
    m.Team1ID, 
    m.Team2ID, 
    T1.TeamName as Teamname1, 
    T2.TeamName as Teamname2
FROM TblMatch m, TblTeam T1, TblTeam T2
 where  m.TEAM1ID = T1.TeamID
and
        m.TEAM2ID = T2.TeamID

php代码:

while($row=mysqli_fetch_array($res))
{
$mst= $row['MatchStart'];

$met = $row['MatchEnd'];
$t1n = $row['TeamName1']; 
$t2n = $row['TeamName2']; 

echo 'Time: \t\t between:\r\n';
echo "$mst" . " - " . " $met \t\t" ;
echo "$t1n vs $t2n \r\n";
}

【讨论】:

  • 谢谢。我相信它会起作用,但我没有尝试过。我选择 Serpes 的答案。
  • 投了赞成票 :)。你能检查我更新的分数查询问题吗?谢谢
【解决方案2】:

您可以将您的比赛表格结果与您的球队表格结合两次,以便提取比赛信息和每支球队的名称。之后,您只需要在 PHP 中连接从数据库中获取的数据。

SELECT 
    m.MatchID, 
    m.MatchDate, 
    m.MatchStart, 
    m.MatchEnd, 
    m.Team1ID, 
    m.Team2ID, 
    T1.Teamname as Teamname1, 
    T2.TeamName as Teamname2
FROM TblMatch M
JOIN TblTeam T1
    ON M.TEAM1ID = T1.TeamID
JOIN TblTeam T2
    ON M.TEAM2ID = T2.TeamID

PHP 代码:

while($row=mysqli_fetch_array($res)){
    $mid= $row['MatchID'];
    $mdd = $row['MatchDate'];
    $t1 = $row['Team1ID'];
    $t2 = $row['Team2ID'];
    $t1n = $row['TeamName1']; 
    $t2n = $row['TeamName2']; 

    echo $t1n . " v/s  . " $t2n ;
}

【讨论】:

  • 请为OP添加一些解释。
  • 感谢您的回复。但是我将如何将团队名称存储在变量中?上面的代码不起作用。它输出印度对印度,巴基斯坦对巴基斯坦
  • 谢谢。仍然有一些错字,但我更正了。它就像魅力:)
  • 嗨,我有另一个得分表,我想根据比赛 ID 和团队 ID 获得得分。代码更新。你能检查一下还是让我打开新问题?
  • 我想您只需要与必须在该表中的 MatchID 匹配的新结果表进行新的联接。如果您愿意,我可以在这里为您提供帮助,但它变得像聊天一样,我认为您无法进入 Stackoverflow 的聊天室。所以...我建议你写一个新问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-01
  • 2010-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-20
相关资源
最近更新 更多