Я делаю запрос mysql, который извлекает относительные данные из 3 таблиц на основе предоставленного идентификатора. Моя проблема возникает, когда я пытаюсь отформатировать SQL-запрос, чтобы при преобразовании результирующего массива в объект JSON данные были правильно вложены.
Мой SQL-запрос:
select * from Players join SchoolData on Players.School = SchoolData.ID join LocationData on SchoolData.Location = LocationData.ID where Players.ID =%d
Когда я JSONify результаты этого запроса, я получаю:
{
"data": [
{
"City": "San Diego",
"Height": 77,
"ID": 7,
"Location": 7,
"Mascot": "Aztecs",
"Name": "San Diego State Aztecs",
"School": 11,
"State": "CA",
"Weight": 196
}
]
}
Я пытаюсь, чтобы мои результаты выглядели следующим примером, которые вставляют данные, которые извлекаются из других таблиц.
{
"data":[
{
"student":
{
"id":xxx-xxx-xxx,
"name": "name1",
"school":
{
"id":xxxx,
"address":
{
"id":xxx,
"city": "mycity",
"state": "OH"
},
"name": "myschool",
"mascot": "wildcats"
},
"height": 72,
"weight": 180
},
]
}
Я смотрел команду FOR JSON
(которая используется в SQL), и вместо выбора *
все, что я могу использовать команду AS
в моем запросе, которая должна помочь с моей меткой перед возвращаемым значением, но не вложением данных.
Я просто не уверен, что это сделано для предварительного запроса или сообщения.
UPDATE Я нахожу следующие функции mysql: https://dev.mysql.com/doc/refman/5.7/en/json-creation-functions.html, но я не уверен, что это то, что я ищу.
SELECT
std.id, std.name, sch.id, add.id, add.city, add.state, sch.name, sch.mascot, std.height, std.weight
FROM
student std LEFT JOIN school sch ON < join condition >
LEFT JOIN address ON < join condition >
FOR JSON AUTO
Попробуйте что-то вроде этого: для JSON AUTO необходимо преобразовать его в строку JSON, которую вы хотите.