MySQL pivot-Zeile in einer dynamischen Anzahl von Spalten

Können sagen, 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 würde gerne eine Tabelle mit Partnern in den Reihen und Produkte, die als Spalten. Bisher war ich in der Lage, zu erhalten eine Ausgabe wie diese:

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

Mithilfe 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 möchte stattdessen 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 habe ich also die Spalte Nummer muss dynamisch ändern, je nachdem die Reihen in die Tabelle Produkte.

Diese sehr gute Antwort nicht scheinen, um mit mysql zu arbeiten: T-SQL Pivot? Möglichkeit der Erstellung von Tabellen-Spalten aus der Zeile Werte

Siehe link Zeile zu Spalte auf für mehrere Vorschläge.
Dynamic-generator

InformationsquelleAutor FeeJai | 2012-08-17

Schreibe einen Kommentar