Lets say I have three different MySQL tables:
Table products: 
id | name
 1   Product A
 2   Product B
Table partners: 
id | name
 1   Partner A
 2   Partner B
Table 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
I would like to get a table with partners in the rows and products as columns. So far I was able to get an output like this:
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
Using this query:
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
but I would like to have instead something like:
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
The problem is that I cannot tell how many products I will have so the column number needs to change dynamically depending on the rows in the products table.
This very good answer does not seem to work with mysql: T-SQL Pivot? Possibility of creating table columns from row values
 
     
    