В запросе три таблицы. Как получить массив команд с их членами в SQL
У меня есть 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

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), поскольку он уже принят.
Вышеприведенное решение не будет показывать команды, которые не имеют никаких записей, так как его левое соединение в таблице записей. Если вы хотите видеть команды / участников, которые не имеют записей, вам нужно будет сделать полное соединение.


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
Попробуйте это он будет работать.................
