MySQL сводит строку в динамическое число столбцов

Допустим, у меня есть три разные таблицы MySQL:

Таблица products:

id | name
 1   Product A
 2   Product B

Таблица partners:

id | name
 1   Partner A
 2   Partner B

Таблица sales:

partners_id | products_id
          1             2
          2             5
          1             5
          1             3
          1             4
          1             5
          2             2
          2             4
          2             3
          1             1

Я хотел бы получить таблицу с партнерами по строкам и продуктами в виде столбцов. До сих пор мне удавалось получить вывод, подобный этому:

name      | name      | COUNT( * )
Partner A   Product A          1
Partner A   Product B          1
Partner A   Product C          1
Partner A   Product D          1
Partner A   Product E          2
Partner B   Product B          1
Partner B   Product C          1
Partner B   Product D          1
Partner B   Product E          1

Используя этот запрос:

SELECT partners.name, products.name, COUNT( * ) 
FROM sales
JOIN products ON sales.products_id = products.id
JOIN partners ON sales.partners_id = partners.id
GROUP BY sales.partners_id, sales.products_id
LIMIT 0 , 30

, но я бы хотел вместо этого что-то вроде:

partner_name | Product A | Product B | Product C | Product D | Product E
Partner A              1           1           1           1           2
Partner B              0           1           1           1           1

Проблема в том, что я не могу сказать, сколько продуктов у меня будет, поэтому номер столбца должен динамически меняться в зависимости от строк в таблице продуктов.

Этот очень хороший ответ, похоже, не работает с mysql: T-SQL Pivot? Возможность создания столбцов таблицы из значений строк

76
задан Community 23 May 2017 в 12:18
поделиться