Переименовать дублированный результат из запроса с левым объединением и группировать по - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть этот запрос:

SELECT 
category,
description
FROM `players` 
INNER JOIN orders ON orders.id_player = players.player
GROUP BY id_p

Это результат:

category           description
1                  tv
1                  radio
1                  computer
2                  hamburger

Я бы хотел получить что-то вроде этого:

category        description
1                 tv
-                 radio
-                 computer
2                 hamburger

Как следуетЯ изменить свой запрос?Спасибо

* внесены изменения в базу данных

Ответы [ 2 ]

0 голосов
/ 29 апреля 2019

5,5

Используйте этот шаблон:

Тест в реальном времени: https://www.db -fiddle.com / f / dicEcARLUJpYLcWTULsb4n / 0

select category, description
from 
(
  select
      case when t.category <> @category then 
          t.category
      else
          '-'
      end as category,
      description,
      @category := category
  from tbl t cross join (select @category := '') x
  order by t.category, description
) y

Вывод:

|    category | description |
|-------------|-------------|
| electronics |    computer |
|           - |       radio |
|           - |          tv |
|        food |   hamburger |
0 голосов
/ 29 апреля 2019

Используя ROW_NUMBER() с CASE, вы можете достичь ожидаемого результата:

SELECT (CASE WHEN ROW_NUMBER() OVER 
        (PARTITION BY order_player ORDER BY (SELECT NULL)) = 1 
       THEN order_player ELSE '-' END
       ) AS order_player,
    description
FROM `players` 
INNER JOIN orders ON orders.id_player = players.player
GROUP BY id_p
...