Как отобразить проект, участников группы и их босса рядом в MySQL - PullRequest
1 голос
/ 30 марта 2019

Я хочу показать (идентификатор команды, имя команды, внутренний идентификатор, имя интерна, идентификатор репортера, имя репортера) для всех моих записей. Я не знаю, как разделить стажеров в одной колонке и репортеров в другой для одной команды. Я хочу сделать это, потому что я хочу, чтобы каждый репортер давал оценку каждому стажеру, с которым он работает в этой группе. Image of my table

Ответы [ 2 ]

0 голосов
/ 30 марта 2019

Я думаю, вы хотите столбцы, которые являются вертикальными "списками". Это не совсем реляционная структура, потому что значения в строках не связаны друг с другом.

Однако вы можете сделать это с помощью условного агрегирования. Однако вам необходимо перечислить значения. В MySQL 8+ это просто с помощью row_number(), поэтому запрос выглядит так:

select teamid, teamname,
       max(case when ptype = 'intern' then peopleid end) as intern,
       max(case when ptype = 'reporter' then peopleid end) as reporter
from (select t.*,
             row_number() over (partition by teamid, ptype order personid) as seqnum
      from t
     ) t
group by teamid, teamname, seqnum;
0 голосов
/ 30 марта 2019

Вы можете использовать объединение с подзапросом для Intern и Reporter

select a.teamID, a.temaName, 
  b.peopleID intren_id, b.firstname intern_name, b.lastname inter_lastname, 
  c.peopleId, c.firstname reporter_name, c.lastname reporter_lastname
from mytable a  
inner join  (
  select teamId, firstname, lastname
  from mytable 
  where pType = 'Intern'
) b on a.teamId  = b.teamId 
inner join  (
  select teamId, firstname, lastname
  from mytable 
  where pType = 'Reporter'
) c on a.teamId  = c.teamId 
...