MySQL pivota la fila en el número dinámico de columnas

Digamos que tengo tres tablas 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

Me gustaría obtener una tabla con socios en las filas y productos como columnas. Hasta ahora pude obtener una salida 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

Utilizando 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

pero me gustaría tener 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

El problema es que no puedo saber cuántos productos tendré, por lo que el número de columna debe cambiar dinámicamente según las filas en la tabla de productos.

Esta muy buena respuesta no parece funcionar con mysql:¿T-SQL Pivot? Posibilidad de crear columnas de tabla a partir de valores de fila.

Respuestas a la pregunta(1)

Su respuesta a la pregunta