Seite 1 von 1
Ja/Nein - Felder spaltenweise zusammenzählen [Gelöst]
Verfasst: So 16. Jun 2013, 20:54
von ATK
Hallo zusammen!
Ich bin dabei eine Datenbank für eine Statistik zu erstellen und komme bei zwei Problemen einfach nicht weiter. Es geht dabei um das spaltenweise zählen von Ja/Nein - Feldern. Die Krönung wäre, wenn ich es nach Monaten gruppiert bekommen täte, und am Jahresende eine Gesammtzahl.
Die Tabelle besteht aus einem Datum und insg. 26 Ja/Nein - Feldern... Es können in einer Zeile mehrere Haken gesetzt sein. Wie kann ich jetzt jede einzelne Spalte der Tabelle -- in Abhänigkeit vom Datum -- zusammenzählen lassen? Im Handbuch und im Forum habe ich leider keine Lösungsansatze finden können oder ich sah den Wald vor lauter Bäumen nicht.
Danke für Eure Hilfe!
Arne
Re: Ja/Nein - Felder spaltenweise zusammenzählen
Verfasst: So 16. Jun 2013, 21:34
von RobertG
Hallo Arne,
das Datum ist doch das, nach dem entsprechend gruppiert werden soll.
Jetzt willst Du eine Spalte mit Ja/Nein-Feld (JN1) abhängig von dem Monat aufaddieren.
Das zählt Dir erst einmal die Ja-Eintragungen in einer Spalte zusammen.
Das gibt der Tabelle einen Alias, mit dem Du auf den aktuellen Datensatz zugreifen kannst.
Code: Alles auswählen
SELECT DISTINCT MONTH("Datum"), (SELECT COUNT("JN1") FROM "Tabelle" WHERE "JN1" = TRUE AND MONTH("Datum") = MONTH("a"."Datum") ) AS "JN1" FROM "Tabelle" AS "a"
Das zeigt Dir die Spalte Spalte addiert in Abhängigkeit vom Monat an. Aber Vorsicht: Es ist bisher nur der Monat gemeint - egal in welchem Jahr.
Code: Alles auswählen
SELECT DISTINCT YEAR("Datum"),MONTH("Datum"), (SELECT COUNT("JN1") FROM "Tabelle" WHERE "JN1" = TRUE AND MONTH("Datum") = MONTH("a"."Datum") AND YEAR("Datum") = YEAR("a"."Datum") ) AS "JN1" FROM "Tabelle" AS "a"
Na ja, jetzt musst Du immer noch den Code für die korrelierende Unterabfrage insgesamt 25 Mal kopieren und an die Felder anpassen ...
Gruß
Robert
Re: Ja/Nein - Felder spaltenweise zusammenzählen
Verfasst: So 16. Jun 2013, 22:23
von ATK
Hallo Robert!
Herzlichen Dank für die schnelle Antwort. Nach etwas längerer Überlegung habe ich es sogar mit der korrelierden Unterabfrage hinbekommen und konnte mir auch nur die Jahressumme(n) anzeigen lassen. Nun versuche ich nur noch den Zusammenhang mit der Tabellenbezeichnung "a" herzustellen...
Für das zweite Problem, das ich anfangs angesprochen habe, muss ich einen neuen Thread öffnen, da er nicht mit den "Ja/Nein-Feldern" zusammenhängt. Ich hoffe, dass Du mir dort auch durch einen kleinen Tipp weiterhelfen kannst.
Grüße
Arne
Re: Ja/Nein - Felder spaltenweise zusammenzählen
Verfasst: So 16. Jun 2013, 22:36
von RobertG
Hallo Arne,
ich habe noch ein bisschen drüber nachgedacht. Das ganze geht auch ohne korrelierende Unterabfrage:
Code: Alles auswählen
SELECT YEAR( "Datum" ), MONTH( "Datum" ), SUM( CONVERT("Wdh",INTEGER) ) FROM "Tabelle1" GROUP BY YEAR( "Datum" ), MONTH( "Datum" )
... Jetzt nicht mit den vorherigen Bezeichnungen. Das Ja-Nein-Feld muss in ein INTEGER-Feld umgewandelt werden. Dann werden alle "Ja" zu einer 1 und die Summe kann gebildet werden. Mit COUNT würden alle Felder einfach zusammengezählt.
Gruß
Robert
Re: Ja/Nein - Felder spaltenweise zusammenzählen
Verfasst: So 16. Jun 2013, 23:00
von ATK
Hallo Robert,
super!!!!! Es funktioniert!
COUNT brauche ich dann nicht mehr, nachdem ich ja nur alle 26 Spalten -spaltenweise- addieren möchte. Für die Jahressumme bilde ich dann einfach eine zweite Abfrage und gruppiere es nur nach Jahren, sofern es keine Möglichkeit gibt, die Summe am Ende in dieser Abfrage (monatsweise) noch anzeigen zu lassen.
Vielen, vielen Dank Robert!
Grüße
Arne
Re: Ja/Nein - Felder spaltenweise zusammenzählen
Verfasst: Mo 24. Jun 2013, 19:01
von ATK
Robert, eine Frage hätte ich noch zu diesem Thema...
Ich überlege meine Datenbank mittels mysql mehrbenutzerfähig zu machen... Das klappt soweit auch ganz gut. Nur funktionieren die o.g. Angaben zur Summenbildung leider nicht. Ist die Syntax soviel anders?
Gruß
Arne
Re: Ja/Nein - Felder spaltenweise zusammenzählen
Verfasst: Mo 24. Jun 2013, 21:53
von RobertG
Hallo Arne,
wenn Du mir sagst, welche der Abfragen Du nutzt, dann will ich das gerne einmal probieren. Wenn es um
SUM( CONVERT("Wdh",INTEGER) )
geht, so stehen diese Funktionen eigentlich auch in MySQL zur Verfügung. Allerdings ist das Boolsche Feld in MySQL direkt schon ein Zahlenfeld, so dass die Umwandlung nicht notwendig ist. Bei mir klappten beide Varianten:
Code: Alles auswählen
SELECT YEAR( `Datum` ), MONTH( `Datum` ), SUM( `Bool` ) FROM `libretest`.`Table` AS `Table` GROUP BY YEAR( `Datum` ), MONTH( `Datum` )
Unterschied zur internen Datenbank: Statt der doppelten Anführungsstriche sind es die «`» (wie immer die genannt werden).
Gruß
Robert
Re: Ja/Nein - Felder spaltenweise zusammenzählen
Verfasst: Di 25. Jun 2013, 18:25
von ATK
Hallo Robert!
Du hast Recht gehabt, es funktionierte bei mySQL, wie Du es beschrieben hattest. Danke nochmals für Deine Hilfe.
Lt. Wikipedia heißt dieser kurze Strich "Backtick" oder "Backquote" (rückwärts geneigtes Hochkomma), wusste ich auch nicht. Jetzt sind wir schlauer.
Gruß
Arne