Присоединитесь к таблице с несколькими результатами, затем объединитесь в один столбец

0

Прежде всего, я знаю, что заголовок моего вопроса немного сбивает с толку, поэтому позвольте мне попытаться объяснить.

У меня есть 3 таблицы, поэтому с этими таблицами я хочу выбрать все из компаний и присоединиться к company_branches, а затем присоединиться к городам.

Все с ТОЛЬКО ОДНЫМ SQL QUERY, и я хочу закончить со списком компаний, и каждая компания, имеющая его, разделяет (массив) в столбце, названном веткими.

Смотрите примеры ниже.

companies_table

  id    |   name
--------+-----------------------
  1     |  microsoft
--------+-----------------------
  2     |  facebook



company_branches_table

  id    |   company_id    | city_id
--------+-----------------+-------------
  1     |  1              | 3
--------+-----------------+-------------
  2     |  1              | 2
--------+-----------------+-------------
  3     |  2              | 1


cities

  id    |   name     
--------+-------------
  1     |  LA              
--------+-------------
  2     |  New york
--------+-------------
  3     |  Chicago

Вот как я хотел, чтобы мои результаты были похожи

в JSON или ассоциативный массив

[
   {
     id       : 1,
     name     : microsoft,
     branches : [
                  {
                     id    : 2,
                     city_name : New york
                  },   
                  {
                     id    : 3,
                     city_name : Chicago
                  }
                ]
   },
   {
     id       : 2,
     name     : facebook,
     branches : [
                  {
                     id    : 1,
                     city_name : LA
                  }   

                ]
   }

]

Я надеюсь, ты поймешь. заранее спасибо

  • 0
    Какие вопросы вы пытались? Где вы сталкиваетесь с ошибками / проблемами?
  • 0
    Вы должны показать усилия того, что вы пытались .. вы не можете просто показать результат без каких-либо усилий
Показать ещё 8 комментариев
Теги:
database

2 ответа

0

Вы можете использовать group_concat()

    SELECT c.NAME                AS companyName, 
       Group_concat(ci.NAME) AS totalBranches 
FROM   companies_table c 
       INNER JOIN company_branches_table cb 
               ON cb.company_id = c.id 
       INNER JOIN cities ci 
               ON ci.id = cb.city_id 
GROUP  BY c.NAME

простой подход...

SELECT c.NAME                AS companyName, 
       Group_concat(ci.NAME) AS totalBranches 
FROM   companies_table c 
       INNER JOIN company_branches_table cb 
               ON cb.company_id = c.id 
       INNER JOIN cities ci 
               ON ci.id = cb.city_id 
GROUP  BY c.NAME 

оба запроса работают нормально, попробуйте в базе данных MySQL...

  • 0
    Спасибо человек .. я попробую это тогда я дам отзыв как можно скорее ...
  • 0
    работает .. но мне придется пометить ответ Ракеша, потому что он ответил первым .. хотя спасибо
Показать ещё 1 комментарий
0

Может быть, это поможет

SELECT ct.id,ct.name,group_concat(c.id, '->', c.name) AS branches FROM companies_table AS ct JOIN company_branches_table AS cbt ON ct.id = cbt.company_id JOIN cities AS c ON c.id = cbt.city_id GROUP BY ct.id

  • 0
    Спасибо человек .. я попробую это тогда я дам отзыв как можно скорее ...
  • 0
    Да, чувак, все работает отлично. он возвращает ветви в строке, разделенной запятыми, и это нормально, потому что я могу просто взорвать их и получить нужный мне массив. Спасибо чувак..

Ещё вопросы

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