Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да обединявате масиви с MySQL от 3 таблици с връзка много към много

„Лесният“ метод е да използвате 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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Drupal hook_submit запис в db

  2. MySQL:Вмъкнете, ако този ip няма записи

  3. Основите на настройката на MySQL на специализирани сървъри

  4. Множество формуляри и един PHP приемник

  5. (mysql, php) Как да получа стойност на полето auto_increment преди вмъкване на данни?