Einzelnen Beitrag anzeigen
  #1  
Alt 18.01.2017, 09:20:06
Tikiwiki Tikiwiki ist offline
Anfänger
 
Registriert seit: Apr 2005
Beiträge: 115
CASE THEN Abfragen

Hallo Gemeinde,

ich hätte eine Problemstellung wozu ich Eure Hilfe benötige (falls das überhaupt so lösbar ist wie ich mir das vorstelle).

Ausgangssituation:
Jede Person muss 3 Aufgaben absolvieren und zu jeder Aufgabe werden Punkte vergeben.
Die Tabelle sieht folgend aus:
persID | f_aufgabeid | status_aufgabe
1 | 1 | 3
1 | 2 | 5
1 | 3 | 2

f_aufgabenid ist die Aufgabennummer 1-3
status_aufgabe ist die Punkteanzahl

Was will ich errreichen
Eine Art Pivot-Darstellung

persID | Aufgabe 1 | Aufgabe 2 | Aufgabe 3
1 | 3 | 5 | 2

Mein Versuch dies abzubilden ist folgender (und das ist anscheinend der falsche Weg)

PHP-Code:
SELECT persidvornamenachnamejahrf_aufgabenidstatus_aufgabe,
(CASE 
WHEN f_aufgabenid 1 THEN status_aufgabe END) AS Aufgabe_1,
(CASE 
WHEN f_aufgabenid 2 THEN status_aufgabe END) AS Aufgabe_2,
(CASE 
WHEN f_aufgabenid 3 THEN status_aufgabe END) AS Aufgabe_3,
FROM `aufgaben_person`
WHERE jahr '2016' 
Als Ausgabe bekomme ich folgende Struktur.

persid | vorname | nachname | jahr | f_aufgabenid | status_aufgabe | Aufgabe_1 | Aufgabe_2 | Aufgabe_3
1 | Max | Muster | 2016| 1 | 3 | 3 | NULL | NULL
1 | Max | Muster | 2016| 2 | 5 | NULL | 5 | NULL
1 | Max | Muster | 2016| 3 | 2 | NULL | NULL | 2

Auch ein SUM(CASE ... oder COUNT(CASE ... bringt nichts oder eines der Felder mit GROUP BY zu gruppieren hilft nichts.

Frage: Wie könnte eine mögliche SQL-Abfrage aussehen um das gewünschte Ergebnis zu erzielen (falls es möglich ist)?

Besten Dank im Voraus und hoffe die Aufgabenstellung ist nachvollziehbar für Euch.

lg
Dietmar
Mit Zitat antworten