В запросе три таблицы. Как получить массив команд с их членами в SQL

В запросе три таблицы. Как получить массив команд с их членами в SQL

20.11.2019 07:32:53 Просмотров 44 Источник

У меня есть 3 таблицы: команды, члены и записи. Как сделать SQL-запрос, чтобы я мог перечислить все команды с их членами.

T1: таблица команд

id_team      name
------------------------
   1           Green team
   2           Blue Team

T2: таблица членов

id_member      name
------------------------
   1           John  
   2           Lola
   3           Nancy
   4           Peter

T3: таблица записей

id_record      id_team    id_member
-----------------------------------
   1             2           3
   2             1           2
   3             1           3
   4             2           4

Это то, что у меня есть сейчас.

$teams = lib::$db->GetAll("SELECT SQL_CALC_FOUND_ROWS
                            t.*,
                            t.name AS team_name
                          FROM teams AS t
                            LEFT JOIN records r ON t.id_team = r.id_team
                            LEFT JOIN members m ON r.id_members  = m.id_member
                         ");

Мне нужно перечислить все команды с их членами. То, что я имею выше, перечисляет всех членов, у которых есть команда.

Что-то вроде этого:

Зеленая команда имеет Лола и Нэнси в качестве членов.

В синей команде есть Джон и Питер в качестве членов.

У вопроса есть решение - Посмотреть?

Ответы - В запросе три таблицы. Как получить массив команд с их членами в SQL / In a query of three tables. How to get an array of teams with their members in SQL

JBurk94

20.11.2019 07:39:52

Select t.name, m.name
FROM records as r
  LEFT JOIN teams t ON t.id_team = r.id_team
  LEFT JOIN members m ON m.id_member == r.id_member

Также имейте в виду, что обычно вы должны называть таблицы после единственных существительных, а не множественных существительных, и столбцы идентификатора первичного ключа могут быть названы лучше (т. е. просто id), поскольку он уже принят.

Вышеприведенное решение не будет показывать команды, которые не имеют никаких записей, так как его левое соединение в таблице записей. Если вы хотите видеть команды / участников, которые не имеют записей, вам нужно будет сделать полное соединение.

https://stackoverflow.com/questions/58959174/in-a-query-of-three-tables-how-to-get-an-array-of-teams-with-their-members-in-s/58959312#comment104174309_58959312
Эй, спасибо за помощь. Снова я получаю список членов, которые принадлежат к командам. Мне нужен список команд с их членами. array (size=3) 0 = > array (size=1) 'name' = > > string 'John' (length=15) 1 = > > > array (size=1) 'name' = > > > string 'Lola' (length=8) 2 =>>>>> массив (размер=1) 'name' = > > > > > > строка 'Nancy' (длина=4)
Devang Garach

20.11.2019 08:05:07

SELECT T.NAME, M.NAME 
FROM TEAMS T JOIN RECORDS R ON T.ID_TEAM=R.ID_TEAM 
JOIN MEMBERS M ON R.ID_MEMBER=M.ID_MEMBER

Попробуйте это он будет работать.................

https://stackoverflow.com/questions/58959174/in-a-query-of-three-tables-how-to-get-an-array-of-teams-with-their-members-in-s/58959753#comment104178874_58959753
Он производит список членов, которые являются частью клуба. Не множество клубов с членами.
Закрыть X