„Лесният“ метод е да използвате CONCAT за генериране на JSON.
И използвайте GROUP_CONCAT, за да комбинирате записите на множество екипи в JSON масив.
Този метод работи и в по-старите версии на MySQL, които не поддържат функции за създаване на JSON.
Заявка
SET SESSION group_concat_max_len =@@max_allowed_packetSELECT CONCAT( "{" , '"id"' , ":" , '"' , friends.id , '"' , "," , '"name"' , ":" , '"' , friends.name , '"' , "," , '"отбор"' , ":" , "[" , GROUP_CONCAT('"', teams.name, '"') , "]" , "}" ) AS jsonFROM приятели INNER JOIN отношения ON friends.id =отношения.friends_idINNER JOIN екипи ON odnosi.teams_id =teams.idWHERE friends.id =1
Резултат
<предварителен код>| json ||----------------------------------------------------- ------------------|| {"id":"1","name":"Дейвид Белтън","team":["Кливланд Кавалиърс"]} |демо
http://www.sqlfiddle.com/#!9/4cd244/19
Редактира още приятели
Заявка
SET SESSION group_concat_max_len =@@max_allowed_packetSELECT CONCAT( "[", GROUP_CONCAT(json_records.json) # комбиниране на json записи в низ, "]" ) AS jsonFROM ( SELECT CONCAT( "{" , '"id "' , ":" , '"' , friends.id , '"' , "," , '"name"' , ":" , '"' , friends.name , '"' , "," , ' "team"' , ":" , "[" , GROUP_CONCAT('"', teams.name, '"') , "]" , "}" ) AS json ОТ приятели INNER JOIN отношения ON friends.id =отношения. friends_id INNER JOIN teams ON relationships.teams_id =teams.id WHERE friends.id IN(SELECT id FROM friends) #изберете приятелите, от които се нуждаете, или просто friends.id IN(1, 2) GROUP BY friends.id) AS json_recordsкод>
Резултат
<предварителен код>| json ||----------------------------------------------------- -------------------------------------------------- --------------------------------------------------| | [{"id":"1","name":"Дейвид Белтън","team":["Cleveland Cavaliers"]},{"id":"2","name":"Алекс Джеймс"," team":["Бостън Селтикс","Кливланд Кавалиърс"]}] |демо
http://www.sqlfiddle.com/#!9/4cd244/61