私はこの2つのmysqlテーブルを持っています:TableAとTableB
TableA
* ColumnAId
* ColumnA1
* ColumnA2
TableB
* ColumnBId
* ColumnAId
* ColumnB1
* ColumnB2
PHPでは、この多次元配列形式が欲しかった
$array = array(
array(
'ColumnAId' => value,
'ColumnA1' => value,
'ColumnA2' => value,
'TableB' => array(
array(
'ColumnBId' => value,
'ColumnAId' => value,
'ColumnB1' => value,
'ColumnB2' => value
)
)
)
);
このようにループできるように
foreach($array as $i => $TableA) {
echo 'ColumnAId' . $TableA['ColumnAId'];
echo 'ColumnA1' . $TableA['ColumnA1'];
echo 'ColumnA2' . $TableA['ColumnA2'];
echo 'TableB\'s';
foreach($value['TableB'] as $j => $TableB) {
echo $TableB['...']...
echo $TableB['...']...
}
}
私の問題は、この目標を達成できるようにMySQLデータベースにクエリを実行する最良の方法または適切な方法は何ですか?
Solution1 --- 私が使っているもの
$array = array();
$rs = mysqli_query("SELECT * FROM TableA", $con);
while ($row = mysqli_fetch_assoc($rs)) {
$rs2 = mysqli_query("SELECT * FROM Table2 WHERE ColumnAId=" . $row['ColumnAId'], $con);
// $array = result in array
$row['TableB'] = $array2;
}
私のコードが常にデータベースを照会しているのではないかと疑っています。
ソリューション2
$rs = mysqli_query("SELECT * FROM TableA JOIN TableB ON TableA.ColumnAId=TableB.ColumnAId");
while ($row = mysqli_fet...) {
// Code
}
2 番目のソリューションは 1 回だけクエリを実行しますが、TableB.ColumnAId (1 TableA.ColumnAId = 1000 TableB.ColumnAId) ごとに TableA に数千行、TableB に数千行ある場合、このソリューション 2 はソリューション 1 よりも時間がかかりますか?