Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

[SQL] Noten aus Datenbank zählen





Frage

Mahlzeit, ich habe folgendes Problem: In Meiner Datenbank sind Noten vorhanden. 1,3 und 5 jeweils mehrfach vorhanden. Nun möchte ich eine grafische Statistik erzeugen und brauche auch die Werte 2,4 und 6 dafür. Diese Noten sind nicht in der Datenbank. Wie kann ich eine SQL Anfrage formulieren die mir als Ergebnis auch die nicht vorhandenen Noten mit Anzahl 0 anzeigt? SELECT DISTINCT "note" COUNT( "note" ) FROM leistung GROUP BY ("note"); Die Abfrage liefert nur die Noten 1,3 und 5 mit der jeweiligen Anzahl. Wie bekomme ich 2,4,6 mit 0 angezeigt? Danke vorab! :)

Antwort 1 von disco

moin

>Wie bekomme ich 2,4,6 mit 0 angezeigt?
über die datenbank? wahrscheinlich nur über sehr fragwürdige methoden.
in welcher programmiersprache befindest du dich? bzw. warum packst du dann dort nicht nachträglich die nicht vorhandenen noten mit dem wert "0" dazu?

g,
disco

Antwort 2 von lleopard

Re Mahlzeit,

ich fürchte was nicht vorhanden ist, wird in einer Abfrage auch nicht angezeigt. wie auch?

Als Grundlage deiner Abfrage gibt es doch bestimmt eine Tabelle Noten. Warum trägst du nicht einfach 2,4 und 6 mit jeweils einer 0 einmal ein?

Wenn du das aus Datentechnischen Gründen nicht willst, dann mußt du dir wohl oder Übel einen kleinen Trick einfallen lassen.

Solltest du ein Formular nutzen, wäre das recht einfach zu realisieren. Dort könntest du die Werte aus der Tabelle auslesen und die fehlenden Werte "nachtragen".

Füge ein Listenfeld ein und sage dem Formular beim Öffnen = Ereignisprozedur und füge diese Routine ein: (Feldnamen bitte anpassen)

Dim stg As String
Dim chk As Long
Dim i As Integer
stg = ""
i = i + 1
For i = 1 To 6
chk = DCount("*", "Noten", "Note=" & i)
If chk > 0 Then chk = DLookup("Häufigkeit", "Noten", "Note=" & i)
stg = stg & i & ";" & chk & ";"
Next i

Listenfeld.Rowsource = stg

'Das Listenfeld muß 2 Spalten haben!! Spaltenbreite kann man auf Automatisch lassen.

Gruß Leo

Antwort 3 von HabNeFrage

Die Programmiersprache lautet SQL - nicht mehr und nicht weniger ;)

Die benötigte Tabelle soll für eine grafische Darstellung dienen.

Die nicht vorhandenen Noten kann ich nicht hinzufügen.

Die Tabelle lautet: Fach, Note

Ich müsste also ein nicht existierendes Fach solange hinzufügen bis dann doch in einem Fach die bisher noch nicht vorhandene Note geschrieben wurde. Das ist Unsinn... :)

Letztlich müßte die GROUP BY Klausel nicht über die Spalte "note" laufen sondern über eine festgelegte Parameterliste (1-6). Aber wie gibt man diese Parameter in die GROUP BY Klausel???

Antwort 4 von disco

sql ist keine programmiersprache, sondern eine syntax mit der du datenbankabfragen machst.
in welcher "umgebung" arbeitest du? du musst doch dir sql-results mit irgendeiner koplexeren sprache verarbeiten, die werte in ein array setzten oder sonst irgendwas. und dort trägst du dann die fehlenden werte einfach nach.

Antwort 5 von HabNeFrage

Die Werte der SQL-Abfrage sollen dann 1:1 in eine Office-Tabelle um dann daraus eine Balkengrafik zu erstellen.

Eine weitere Möglichkeit wäre also die Tabelle

Note Anzahl
1 2
3 4
5 1

zu vervollständigen, aber...

bei anderen Noten ändert sich ja auch die Postition der Note in der Zeile. Wenn z.B. eine 2 hinzukommt verschieden sie die Werte 3 und 5 um eine Zeile nach unten in der Office-Tabelle.

Rein theoretisch wäre also auch dein Weg mit dem Vervollständigen möglich.

Antwort 6 von lleopard

Hallo HabNeFrage

was nennst du denn eine Office-Tabelle?

Erstmal denke ich befinden wir uns in einer Access-Datenbank, oder?

Nun hast du ja schon sehr schön eine Abfrage geschrieben, die dir die vorhandenen Noten und deren Häufigkeit auswirft.

In dem Code oben kannst du diese Auswahlabfrage als quelle nutzen... Selbst wenn nun Werte in der Tabelle für 1,3 oder 5 dazukommen, ändert sich doch die Reihenfolge nicht. Der Code geht doch die werte von 1 bis 6 durch und schreibt die der Reihe nach weg.

Stehen die Werte erstmal in der reihenfolge in einem Listenfeld, kannst du diese Werte doch einfach zB an Excel übergeben und deine Grafik/Balkengrafik mit diesen Werten erstellen.

Das wiederum kannst du über eine verknüpfte Exceltabelle realisieren oder auch wieder per VBA... aber das ist ja hier nicht die Frage.

Gruß Leo

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: