gpt4 book ai didi

php - 尝试对 SQL 多表查询的结果进行分组

转载 作者:行者123 更新时间:2023-11-30 01:07:05 24 4
gpt4 key购买 nike

好吧,我解释的最好方法是举个例子

Table 1
ID | name | class
-------------------------
1 | first name | a
2 | second name | b

Table 2
ID | name_id | meta_key | meta_value |
-------------------------------------------------------
1 | 1 | image | someImage.jpg |
2 | 1 | description | very long description |
3 | 2 | image | someImage_2.jpg |
4 | 2 | description | very long description 2 |

我尝试从表 1 中选择名称和类别,以及表 2 中与 ID(在表 1 中)具有相同 name_id 的所有记录。

这是我现在的查询:

SELECT
table1.name,
table1.class,
table2.name_id,
table2.meta_key,
table2.meta_value
FROM
table1
LEFT JOIN
table2 ON ( table1.ID = table2.name_id )
WHERE
table1.ID = '2'

这会起作用并返回一个数组,其中包含与 name_id = 2 的表 2 条目一样多的元素

有没有办法返回一个数组,其中 1 是第一个表的结果,另一个数组是第二个表的结果?

更新:理想的结果将是: $result['table1'][0] = array('name' => '第二个名字', '类' => 'b')

$result['table2'][0] = array('name_id' => 2, 
'meta_key' => 'image',
'meta_value' => 'someImage_2.jpg')
$result['table2'][1] = array('name_id' => 2,
'meta_key' => 'description',
'meta_value' => 'very long description 2')

希望这是有道理的。

最佳答案

我会在从数据库中获取结果数组后对其进行拆分...

//Assuming your result-set is assigned to $result:

$table1_keys = array('id', 'name', 'class');
$table2_keys = array('id', 'name_id', 'meta_key', 'meta_value');

$table1_results = array();
$table2_results = array();

foreach($result as $key => $val) {
if(in_array($key, $table1_keys)) {
$table1_results[] = $val;
}

if(in_array($key, $table2_keys)) {
$table2_results[] = $val;
}
}

此后,您的结果集应分为两个数组:$table1_results$table2_results

希望这对您有帮助。

关于php - 尝试对 SQL 多表查询的结果进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19670341/

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