Как отделить данные друг от друга с одинаковым значением - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть 2 таблицы в моей базе данных, первая таблица

лидер

id   | name  | age
1    | John  | 40
2    | Doe   | 35

член

id   | name   | age
1    | Mark   | 40
2    | Jessica| 35
2    | Tiff   | 31

И то, что я хочу, это так

Group 1

Leader : John  40
Member : Mark  40

Group 2

Leader : Doe  35
Member : Jessica 35
         Tiff   31

Мой запрос

SELECT *
FROM (
    SELECT id, name, age
    FROM leader
    UNION
    SELECT id, name, age, 
    FROM member
) x
ORDER BY id

Я пытался использовать UNION и JOIN, но он не работает. Может кто-то мне помочь, и форма помощи будет очень ценится. Спасибо всем!

1 Ответ

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

Вы можете использовать UNION ALL следующим образом:

select t.col
from (
  select 0 type, id, concat('Group ', id) col
  from leader
  union all
  select 1, id, concat('Leader: ', name, ' ', age) 
  from leader
  union all
  select 2, id, concat('Member: ', name, ' ', age) 
  from member
) t
order by t.id, t.type

Результаты:

> | col                |
> | :----------------- |
> | Group 1            |
> | Leader: John 40    |
> | Member: Mark 40    |
> | Group 2            |
> | Leader: Doe 35     |
> | Member: Jessica 35 |
> | Member: Tiff 31    |

Или:

select t.col
from (
  select 0 type, id, concat('Group ', id) col
  from leader
  union all
  select 1, id, concat('Leader: ', name, ' ', age) 
  from leader
  union all
  select 2, id, concat('Member: ', group_concat(concat(name, ' ', age) separator '\n        ')) 
  from member
  group by id
) t
order by t.id, t.type

Результаты:

> | col                                   |
> | :------------------------------------ |
> | Group 1                               |
> | Leader: John 40                       |
> | Member: Mark 40                       |
> | Group 2                               |
> | Leader: Doe 35                        |
> | Member: Jessica 35                    |
> |         Tiff 31                       |

См. Демоверсию .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...