Lets sagen, ich habe drei verschiedene MySQL-Tabellen:MySQL Pivotzeile in dynamische Anzahl der Spalten
Tabelle products
:
id | name
1 Product A
2 Product B
Tabelle partners
:
id | name
1 Partner A
2 Partner B
Tabelle 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
Ich möchte eine Tabelle mit den Partnern in den Reihen und Produkte als Spalten erhalten. Bisher konnte ich eine Ausgabe wie folgt erhalten:
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
diese Abfrage verwenden:
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
aber ich möchte wie anstatt etwas haben:
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
Das Problem ist, dass ich nicht sagen kann, wie viele Produkte ich haben werde, so dass die Spaltennummer dynamisch geändert werden muss, abhängig von den Zeilen in der Produkttabelle.
Diese sehr gute Antwort scheint nicht mit MySQL zu arbeiten: T-SQL Pivot? Possibility of creating table columns from row values
Verweis für mehrere Vorschläge verweisen Sie auf [Zeile zu Spalte] (https://stackoverflow.com/questions/15745042/efficiently-convert-rows-to-columns-in-sql-server). –