Форматирование Mysql вернул Array для JSON

0

Я делаю запрос 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, но я не уверен, что это то, что я ищу.

Теги:
arrays

1 ответ

0
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, которую вы хотите.

  • 0
    Спасибо, что FOR JSON - это синтаксис SQL.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню