何を検索すればよいかさえわからないので、これがすでにどこかでカバーされている場合はご容赦ください。
複数のテーブルからデータを取得する SELECT ステートメントがあります。予想どおり、このクエリを実行すると、次のように、2 番目のテーブルの各レコードのレコードが取得されます。
|ID |Name |Assets
------------------------------------
|1 |Bob |Car
|1 |Bob |Bicycle
|1 |Bob |House
|2 |Jane |Car
|2 |Jane |House
|3 |Peter |Boat
|3 |Peter |Car
|3 |Peter |Motorcycle
私が欲しいのは次のようなものです:
|ID |Name |Assets
------------------------------------
|1 |Bob |Car,Bicycle,House
|2 |Jane |Car,House
|3 |Peter |Boat,Car,Motorcycle
PHP を使用して、最初のテーブルから取得したレコードごとに 2 回データベースにヒットするだけでこれを達成できましたが、ページの更新ごとにデータベースに 40 ~ 60 回ヒットするため、ページが遅くなります。
クエリ 1:
SELECT ID,Name FROM People
次に、while ループ内でクエリ 2 を実行します。
<?php
while($owner_row=odbc_fetch_array($query1) {
$assets = odbc_exec($conn,"SELECT Asset FROM Assets WHERE Owner='$owner_row[Name]'");
$asset_array = odbc_fetch_array($assets);
$asset_string = implode(",",$asset_array);
}
次に、各所有者からのアセットの結果を文字列に結合し、好きなように表示できます。
単一のクエリでこれを達成する方法はありますか?データベースに一度だけヒットし、それらのアセットをクエリ自体内の単一の値に結合する方法はありますか?