我什至不确定要搜索什么,如果这已经在某个地方覆盖,请原谅我。
我有一个从多个表中提取数据的 SELECT 语句。正如预期的那样,如果我运行这个查询,我会得到第二个表中每条记录的记录,就像这样。
|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 通过简单地为从第一个表中获得的每条记录再次访问数据库来实现这一点,但这使得我的页面变慢,因为它在每次页面刷新时访问数据库大约 40-60 次。
查询一:
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);
}
然后,我可以将每个所有者的资产结果组合成一个字符串,并根据需要显示它们。
有没有办法在单个查询中实现这一点,以便我只访问数据库一次并以某种方式将这些资产组合成查询本身中的单个值?