MySql: получить запись обеих таблиц без использования объединения - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть следующие таблицы

team имеет следующие поля. Пользователь может создать команду.

id
title

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

id
team_id
user_id
role - leader, student

classes имеет следующие поля. Пользователь может создавать классы.

id
team_id
class_name
user_id

Данные идут так, как показано ниже

`team`
id| title
1 | New team
2 | Other team

`team_users`
id | team_id | user_id | role
1  |    1    |   1     | leader
2  |    2    |   3     | student

classes
 id | team_id | class_name | creator_id
 1  |   1     | Other class|   2
 2  |   2     | My class   |   1  

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

Результатом должны быть оба класса, если мне нужны все сеансы пользователя с идентификатором 1. потому что 1 создал класс «Мой класс», а 1 - часть команды, которая имеет класс «Другой класс».

Можно ли получить записи без объединения?

1 Ответ

0 голосов
/ 15 апреля 2020

Может быть, вам просто нужно объединение с ON..OR и group_concat

drop table if exists team,team_users,classes;

create table `team`
(id int, title varchar(10));
insert into team values
(1 , 'New team'),
(2 , 'Other team');

create table `team_users`
(id int, team_id int, user_id int, role varchar(10));
insert into team_users values
(1  ,    1    ,   1     , 'leader'),
(2  ,    2    ,   3     , 'student');

create table classes
( id int, team_id int, class_name varchar(20), creator_id int);
insert into classes values
( 1  ,   1     , 'Other class' ,   2),
( 2  ,   2     , 'half baked'  ,   1),
( 2  ,   2     , 'My class'    ,   1);

 select user_id , 
        group_concat(c.class_name)  classes
 from team_users tu
 left join classes c on c.creator_id = tu.user_id or c.team_id = tu.team_id
 where tu.user_id = 1;

+---------+---------------------------------+
| user_id | classes                         |
+---------+---------------------------------+
|       1 | Other class,half baked,My class |
+---------+---------------------------------+
1 row in set (0.001 sec)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...