0

データベースでSQLクエリを実行すると、内部結合が希望どおりに機能するようになりました。

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['name'],

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

しかし、これを行うと、未定義のインデックスというエラーが表示されます。

私はここで何が間違っているのですか?

4

4 に答える 4

2

ここでの問題は、school1.nameとschool2.nameの両方が(phpでは)両方とも$row['name']という名前であるということです。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'],
  );
}
于 2012-11-19T11:16:03.733 に答える
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'],
  );
}
于 2012-11-19T11:16:18.020 に答える
0

それらのエイリアスを使用するだけです。同様school1.name AS SCHLNAME1, school2.name AS SCHLNAME2 に、これらのインデックスはアレイで使用可能になります。

'awayschool' => $row['SCHLNAME1'],
'awayschool' => $row['SCHLNAME2']
于 2012-11-19T11:17:02.627 に答える
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>
于 2012-11-19T11:19:54.940 に答える