gpt4 book ai didi

php - mysql最快2表查询

转载 作者:行者123 更新时间:2023-11-29 14:57:06 25 4
gpt4 key购买 nike

情况: 2 个表,第一个表(Persons)存储人名和一些其他数据,第二个表(Phones)存储他们的电话号码。每个人可以有多个电话号码(这就是我首先使用单独表格的原因)。

目标:选择所有内容,以便最终我会得到一个如下所示的 php 数组:

array
(
'0' => array
(
'name' => 'John Smith'
// other values from table Persons...
'Phones' => array('0' => '12345', '1' => '324343') // from Phones table

),
'1' => array
(
'name' => 'Adam Smith'
// other values from table Persons...
'Phones' => array('0' => '645646', '1' => '304957389', '2' => '9435798') // from Phones table

)
);

等等。

Phones.person_id = Persons.id

最快的方法是什么?从程序执行时间的意义上来说最快,而不是编码时间。我可以做简单的 JOIN,但在这种情况下,我会得到许多重复的行,即对于每部手机,如果您明白我的意思,我会在每一行中一次又一次地获取同一个人的所有数据。所以我需要在 PHP 端处理数组。也许有更好的方法?

最佳答案

一个查询。检查是否有拼写错误:

$return = array();
$query = "SELECT pe.id, pe.name, ph.phone FROM Persons pe INNER JOIN phones ph ON pe.id = ph.person_id ";
$results = mysql_query($query);
if($results && mysql_num_rows($results)) {
while($row = mysql_fetch_assoc($results)) {
if(!$return[$row['id']]) {
$return[$row['id']] = array('name' => $row['name'], 'Phones' => array());
}
array_push($return[$row['id']]['Phones'], $row['phone']);
}
}
return $return;

关于php - mysql最快2表查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4319039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com