Nehmen wir an, ich habe drei verschiedene MySQL-Tabellen:
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 Partnern in den Zeilen und Produkten 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
Verwenden dieser Abfrage:
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 hätte stattdessen gerne etwas wie:
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, sodass sich die Spaltennummer abhängig von den Zeilen in der Produkttabelle dynamisch ändern muss.
Diese sehr gute Antwort scheint mit MySQL nicht zu funktionieren: T-SQL Pivot? Möglichkeit zum Erstellen von Tabellenspalten aus Zeilenwerten