MMPL1:
私は私のプロジェクトに取り組んでいると私はいくつかの助けを必要としています。私はワードプレスの私のカスタムエンドポイントを作ってるんです。すべては一つのことを除いて罰金を動作します。私は、データベースを持っています
| id | city | company | email | website
--------------------------------------------------------------
| 22 | city_1 | company one | [email protected] | comp1.com
--------------------------------------------------------------
| 12 | city_2 | company two | [email protected] | comp2.com
--------------------------------------------------------------
| 31 | city_2 | company three | [email protected] | comp3.com
--------------------------------------------------------------
| 72 | city_3 | company four | [email protected] | comp4.com
私はその形式が含まれているJSONを印刷したいです
{
"city":"city_1",
"companies": [
{
"id":"22",
"email":"[email protected]",
"website":"comp1.com"
}
],
},
{
"city":"city_2",
"companies": [
{
"id":"12",
"email":"[email protected]",
"website":"comp2.com"
},
{
"id":"31",
"email":"[email protected]",
"website":"comp3.com"
}
],
},
{
"city":"city_4",
"companies": [
{
"id":"72",
"email":"[email protected]",
"website":"comp4.com"
}
],
},
だから、私は街の値に基づいて、一つにグループの複数の値にしたいです。どのように私はそれを行うことができますか?私は、GROUP BYステートメントを試みたが、それは私に1行を与えます。私の現在のSQLクエリ
SELECT * FROM database ORDER BY city COLLATE utf8_polish_ci
任意の助けてくれてありがとう!
Naveenアローラ:
使用する
JSON_ARRAYAGG
select JSON_ARRAYAGG(JSON_OBJECT('city',city,'companies',companies)) from (
select city,JSON_ARRAYAGG(JSON_OBJECT('id',id,'company',
company,'email',email,'website',website)) as companies from test group by city
)t;
これは、JSON形式で予想される出力を印刷します。
出力:
[
{
"city": "city_1", "companies": [{"id": 22, "email": "[email protected] ", "company": "company one ", "website": "comp1.com"}]
},
{
"city": "city_2", "companies": [{"id": 12, "email": "[email protected]", "company": "company two ", "website": "comp2.com"},
{"id": 31, "email": "[email protected]", "company": "company three", "website": "comp3.com"}]
}
]