2015-04-17 97 views
1

我有表匹配(其中包含“ID,日期,team1_id,team2_id ”)PHP(SQL)选择名称其中id =多个值

和表(其中包含“ ID ,命名“)

我需要的PHP或SQL代码,将显示球队的名称(从表队),其中"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 
}   

,但我需要添加team2.id(name)到的foreach。 (DATE | TEAM1 NAME | TEAM2 NAME)

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

+1

对不起,但是真的可以在同一队之间进行比赛吗?我想你是指OR而不是AND。 – jarlh

回答

0

使用此查询:

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

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

表应该是这个样子:

0
$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 
} 
0

我会在球队表2内加入做到这一点

match.id | match.date | team1_team.name | team2_team.name

0

你可以试试这个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),日期,team1(团队名称1)和team2(团队名称2),因此您可以在您的php代码中使用$matchinfo["team1"]$matchinfo["team2"]