Hallo,
ich steht vor einem kleinem Problem. Ich hoffe Ihr könnte mir dazu ein paar Tipps geben.
Meine Tabellenstruktur ist wie folgt:
Tabellenname: Tabelle
----------------------------------------------
FACH | ZEIT | SPALTE | WERT
----------------------------------------------
Die Felder FACH, ZEIT und SPALTE bilden einen Index (nicht Primär!), da die Einträge mehrfach vorkommen können.
Das Feld SPALTE beinhaltet Informationen in welcher Spalte die Werte dargestellt werden sollen. Das Endgültige Ergebnis soll wie folgt aussehen:
----------------------------------------------------------------
FACH | WERT (Spalte 1) | WERT (Spalte 2)
----------------------------------------------------------------
Die Tabelle beinhaltet ca. 270.000 Einträge. Ich möchte allerdings nur die ersten 20 Einträge sortiert nach FACH anzeigen.
Folgende Ideen hatte ich, die ich leider verwerfen musste.
Variante 1)
SELECT SUM(WERT) FROM Tabelle GROUP BY FACH ORDER BY FACH LIMIT 0,20
=> Geht nicht: da ich dann nicht 20 Werte aus Spalte 1 und 20 Werte aus Spalte 2 bekomme sondern nur die ersten 20 Werte in der Tabelle
Variante 2)
1) SELECT SUM(WERT) FROM Tabelle WHERE Spalte=1 GROUP BY FACH ORDER BY FACH LIMIT 0,20
2) SELECT SUM(WERT) FROM Tabelle WHERE Spalte=2 GROUP BY FACH ORDER BY FACH LIMIT 0,20
=> Geht nicht: Da die 20 Werte aus Spalte 2 ggf. ganz andere Fächer sind die nicht in Spalte 1 sind.
Kann mir jemand helfen das Problem zu lösen? Das Problem ist auch das der Eintrag FACH für eine Spalte nicht eindeutig sind, sondern das Fach Mathe z.B. mehrmals in Spalte 1 oder 2 vorkommen kann.
Hier nochmal eine Beispieltabelle und das Ergebnis:
FACH, ZEIT, SPALTE, WERT
Mathe, 1, 1, 10
Deutsch, 1, 1, 10
Deutsch, 1, 1, 10
Deutsch, 1, 2, 30
Mathe, 1, 2, 30
Mathe, 1, 2, 30
Ergebnis:
Deutsch, 20, 30
Mathe, 10, 60
ich steht vor einem kleinem Problem. Ich hoffe Ihr könnte mir dazu ein paar Tipps geben.
Meine Tabellenstruktur ist wie folgt:
Tabellenname: Tabelle
----------------------------------------------
FACH | ZEIT | SPALTE | WERT
----------------------------------------------
Die Felder FACH, ZEIT und SPALTE bilden einen Index (nicht Primär!), da die Einträge mehrfach vorkommen können.
Das Feld SPALTE beinhaltet Informationen in welcher Spalte die Werte dargestellt werden sollen. Das Endgültige Ergebnis soll wie folgt aussehen:
----------------------------------------------------------------
FACH | WERT (Spalte 1) | WERT (Spalte 2)
----------------------------------------------------------------
Die Tabelle beinhaltet ca. 270.000 Einträge. Ich möchte allerdings nur die ersten 20 Einträge sortiert nach FACH anzeigen.
Folgende Ideen hatte ich, die ich leider verwerfen musste.
Variante 1)
SELECT SUM(WERT) FROM Tabelle GROUP BY FACH ORDER BY FACH LIMIT 0,20
=> Geht nicht: da ich dann nicht 20 Werte aus Spalte 1 und 20 Werte aus Spalte 2 bekomme sondern nur die ersten 20 Werte in der Tabelle
Variante 2)
1) SELECT SUM(WERT) FROM Tabelle WHERE Spalte=1 GROUP BY FACH ORDER BY FACH LIMIT 0,20
2) SELECT SUM(WERT) FROM Tabelle WHERE Spalte=2 GROUP BY FACH ORDER BY FACH LIMIT 0,20
=> Geht nicht: Da die 20 Werte aus Spalte 2 ggf. ganz andere Fächer sind die nicht in Spalte 1 sind.
Kann mir jemand helfen das Problem zu lösen? Das Problem ist auch das der Eintrag FACH für eine Spalte nicht eindeutig sind, sondern das Fach Mathe z.B. mehrmals in Spalte 1 oder 2 vorkommen kann.
Hier nochmal eine Beispieltabelle und das Ergebnis:
FACH, ZEIT, SPALTE, WERT
Mathe, 1, 1, 10
Deutsch, 1, 1, 10
Deutsch, 1, 1, 10
Deutsch, 1, 2, 30
Mathe, 1, 2, 30
Mathe, 1, 2, 30
Ergebnis:
Deutsch, 20, 30
Mathe, 10, 60
Zuletzt bearbeitet: