2012-11-19 72 views
0

我有一个内部联接工作如何,当我在我的数据库中执行一个SQL查询。PHP阵列选择与内部联接

SELECT debate.date, school1.name, school2.name 
FROM debate 
INNER JOIN schools as school1 
ON debate.homeid=school1.id 
INNER JOIN schools as school2 
ON debate.awayid=school2.id 

返回

date  name  name 
19-01-2013 st Peters St Simons 

当我试着使用PHP这样做。我使用相同的select语句,并在下面添加。

foreach ($result as $row) 
{ 
    $debates[] = array(
    'date' => $row['date'], 
    'awayschool' => $row['name'], 
    'homeschool' => $row['name'], 
); 
} 


<table> 
<tr> 
<td><?php echo $debate['date']; ?></td> 
<td><?php echo $debate['name']; ?></td> 
<td><?php echo $debate['name']; ?></td> 
</tr> 
</table> 

它返回

date  name  name 
19-01-2013 st Peters st Peters 

但是我希望它回来。

date  name  name 
19-01-2013 st Peters St Simons 

在我的阵列我尝试了好几种不同的东西,如与

'awayschool' => $row['school1.name'], 

更换

'awayschool' => $row['name'], 

,但我得到一个错误说未定义指数当我这样做。

我在这里做错了什么?

回答

2

这里的问题是,无论school1.name和school2.name是(在php)并重命名为$行[“名称”],你可以使用AS将其重命名

SELECT debate.date, school1.name, school2.name AS name2 
FROM debate 
INNER JOIN schools as school1 
ON debate.homeid=school1.id 
INNER JOIN schools as school2 
ON debate.awayid=school2.id 

然后取一个改变你的foreach循环这个

foreach ($result as $row) 
{ 
    $debates[] = array(
    'date' => $row['date'], 
    'awayschool' => $row['name'], 
    'homeschool' => $row['name2'], 
); 
} 
1

修改您的查询,像这样

SELECT debate.date, school1.name "School1Name", school2.name "School2Name" 
FROM debate 
INNER JOIN schools as school1 
ON debate.homeid=school1.id 
INNER JOIN schools as school2 
ON debate.awayid=school2.id; 

然后:

foreach ($result as $row) 
{ 
    $debates[] = array(
    'date' => $row['date'], 
    'awayschool' => $row['School1Name'], 
    'homeschool' => $row['School2Name'], 
); 
} 
0

只需使用一个别名them.Like school1.name AS SCHLNAME1, school2.name AS SCHLNAME2 那么这些指标会在你array.Then可用时,它会

'awayschool' => $row['SCHLNAME1'], 
'awayschool' => $row['SCHLNAME2'] 
0

尝试改变下列

<td><?php echo $debate['date']; ?></td> 
<td><?php echo $debate['name']; ?></td> 
<td><?php echo $debate['name']; ?></td> 

到此

<td><?php echo $debate['date']; ?></td> 
<td><?php echo $debate['awayschool']; ?></td> 
<td><?php echo $debate['homeschool']; ?></td>