Linha de pivô do MySQL no número dinâmico de colunas

Vamos dizer que eu tenho três tabelas MySQL diferentes:

Mesaproducts:

id | name
 1   Product A
 2   Product B

Mesapartners:

id | name
 1   Partner A
 2   Partner B

Mesasales:

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

Eu gostaria de obter uma tabela com parceiros nas linhas e produtos como colunas. Até agora eu consegui uma saída como esta:

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

Usando esta consulta:

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

mas eu gostaria de ter algo como:

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

O problema é que não posso dizer quantos produtos terei para que o número da coluna precise mudar dinamicamente dependendo das linhas na tabela de produtos.

Esta resposta muito boa parece não funcionar com o mysql:T-SQL Pivot? Possibilidade de criar colunas de tabela a partir de valores de linha

questionAnswers(1)

yourAnswerToTheQuestion