我有一个具有这种结构的复杂查询:
SELECT DRIVER, TRAVEL
FROM TRAVELS
WHERE ...
返回如下内容:
DAVID PARIS
DAVID OSLO
JHON AMSTERDAM
DAVID MADRID
MARCO BARCELONA
JHON ROME
嗯,我想要做的是将信息分为两部分。我的意思是,首先是一系列包含以下内容的驱动程序:
DAVID
JHON
MARCO
根据用户的选择,我想得到那个司机的旅行。假设您选择 DAVID ,将返回一个数组:
PARIS
OSLO
MADRID
我知道我可以轻松地将它分成两个查询,但正如我所说,这是一个复杂的查询数据库,有很多记录,这样我就可以节省时间。
我正在使用 php ...你会怎么做??带有关联数组? 你能举个例子吗?
我希望我的解释清楚。 提前谢谢。
答案 0 :(得分:1)
两者首先将它们保存在数组中:
while ($row = $result->fetch_object()) { // for mysqli. for mysql use mysql_fetch_object($result)
$travel[$row->DRIVER][] = $row->TRAVEL;
}
第一个:
$drivers = array_keys($travel);
第二个:
$locations = $travel[$driver];
答案 1 :(得分:0)
我自己从未使用它,但看起来像PDO fetchAll
magic can do the trick
或者您可以手动循环返回结果,填充您希望的任何数组
答案 2 :(得分:0)
使用数组浏览结果。如果名称不在数组中,只需添加名称作为键和空数组。然后获取(name-)数组并添加城镇并将其放回所有名称的数组中。比你有关联数组。
答案 3 :(得分:0)
保持查询不变并遍历结果集并创建数据结构,其中数组键是驱动程序的名称,value是包含所有位置的数组。
array("DAVID" => array("PARIS", "OSLO", "MADRID"), ...);
现在,您可以使用array_keys函数获取驱动程序列表,并获取位置列表
使用$arr["DAVID"]