mysql konvertieren mehrere Zeilen in Spalten in einer einzigen Zeile
ich habe eine Tabelle mit Spalten:
- user_id int
- code int
- Wert int
Und ich bauen möchte, eine zusammenfassende Tabelle, die sieht wie folgt aus:
- user_id int
- werta int
- wertb int
In der Tabelle details, werta entsprechen würde, zu sagen, code 5, und wertb entsprechen würde, zu sagen, code 6, ich bin auf der Suche nach etwas wie:
insert into Zusammenfassung (user_id,werta,wertb) VALUES ( SELECT ??? von details );
Das problem ist natürlich, dass ich freue mich auf mehrere Zeilen aus der "details" - Tabelle zu füllen eine Zeile in der "übersicht" - Tabelle.
ZB, wenn ich die folgenden Zeilen in details:
1 5 100
1 6 200
2 5 1000
2 6 2000
Möchte ich am Ende mit den folgenden in die zusammenfassende Tabelle:
1 100 200
2 1000 2000
Irgendwelche Ideen?
- 5 Fragen, keine akzeptierten Antworten, 0 Antworten auf anderer Leute Fragen. Sie wissen, dies ist eine community-Seite und nicht somecompany support-forum, richtig?
Du musst angemeldet sein, um einen Kommentar abzugeben.
MySQL nicht mit PIVOT/UNPIVOT-syntax, welche Blätter Sie verwenden eine Kombination aus GROUP BY und CASE-Ausdrücke:
SELECT v.id, v.first, v.last, v.email, MAX(case vs.sid when '1' then 'Yes' else 'No' end) FB, MAX(case vs.sid when '2' then 'Yes' else 'No' end) Twitter, MAX(case vs.sid when '3' then 'Yes' else 'No' end) Instagram, MAX(case vs.sid when '4' then 'Yes' else 'No' end) Vine, MAX(case vs.sid when '5' then 'Yes' else 'No' end) Google+ FROM t1 v LEFT OUTER JOIN t2 u ON u.id = v.id LEFT OUTER JOIN t3 vs ON vs.id = v.id WHERE v.test=0 AND v.help=1 AND u.activationstate='Active' GROUP BY v.id
Achtung: Sie werden am Ende mit Zusammenfassung mehrerer Spalten, wenn user_id+code ist nicht eindeutig.
EDIT:
Wenn Sie eine überschaubare Satz von codes (sage nur 5 und 6), konnten Sie so etwas tun:
Müssen Sie möglicherweise ändern Sie Ihre
JOIN
s, je nachdem, ob Ihre codes sind nicht erforderlich, da 1-zu-1-Beziehung (d.h.LEFT JOIN
s).Wenn Sie eine große Menge von codes, ich würde in ein cursor läuft eine ähnliche Anfrage vor über einem ResultSet Ihrer codes oder mithilfe einer anderen Technologie (z.B. PHP-Skript).