【发布时间】:2012-09-04 23:56:39
【问题描述】:
我什至不确定要搜索什么,如果这已经在某个地方覆盖,请原谅我。
我有一个从多个表中提取数据的 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 次.
查询 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);
}
然后,我可以将来自每个所有者的资产结果组合成一个字符串,并根据需要显示它们。
有没有办法在单个查询中实现这一点,以便我只访问数据库一次并以某种方式将这些资产组合成查询本身中的单个值?
【问题讨论】:
-
您使用的是什么 RDMS?
-
抱歉,我正在访问 SyBase 数据库。
标签: php sql select odbc sybase