gpt4 book ai didi

使用 JOIN 进行 MySQL 采样

转载 作者:行者123 更新时间:2023-11-29 17:07:32 30 4
gpt4 key购买 nike

我有表clients,其中包含idnamecompany列。

agreements,其中包含idclient_idnumbercreated_at列.

一对多关系。

我的查询:

SELECT 
a.name,
a.company,
b.number,
b.created_at
FROM clients a
JOIN agreements b
ON b.client_id = a.id
WHERE a.id = '{$clientId}'

我有结果:

array(2) {
[0]=>
array(4) {
["name"]=>
string(10) "Alton Wood"
["company"]=>
string(10) "My company"
["number"]=>
string(10) "5435635678"
["created_at"]=>
string(10) "2018-08-11"
}
[1]=>
array(4) {
["name"]=>
string(10) "Alton Wood"
["company"]=>
string(10) "My company"
["number"]=>
string(10) "1234545546"
["created_at"]=>
string(10) "2018-08-16"
}
}

如何更改查询以获得输出?

array(1) {
[0]=>
array(3) {
["name"]=>
string(10) "Alton Wood"
["company"]=>
string(10) "My company"
["agreements"]=>
array(2) {
[0]=>
["number"]=>
string(10) "5435635678"
["created_at"]=>
string(10) "2018-08-11"
}
[1]=>
["number"]=>
string(10) "1234545546"
["created_at"]=>
string(10) "2018-08-16"
}
}
}
}
}
}

最佳答案

我还没有测试过这个查询,因为我没有示例数据(如果你发布它,它真的很有帮助:),但这样的东西可能会起作用。

SELECT 
a.name,
a.company,
JSON_ARRAYAGG(JSON_OBJECT('number', b.number, 'created_at', b.created_at)) AS agreements
FROM clients a
JOIN agreements b
ON b.client_id = a.id
WHERE a.id = '{$clientId}'
GROUP BY 1,2

编辑:如果您想要答案作为数组,您可以使用

SELECT 
a.name,
a.company,
JSON_ARRAYAGG(JSON_ARRAY(b.number, b.created_at)) AS agreements
FROM clients a
JOIN agreements b
ON b.client_id = a.id
WHERE a.id = '{$clientId}'
GROUP BY 1,2

但在这种情况下,您将丢失 key 。

希望对你有帮助

关于使用 JOIN 进行 MySQL 采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52010881/

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