Hallo liebe Access-Experten,
gleich vorweg, ich bin Anfängerin, was Access und SQL angeht. Hab jedoch einer Freundin eine Datenbak gebastelt und habe jetzt ein (wahrscheinlich logisches) Problem bei einer Abfrage...
Folgende Strukturen:
es gibt (nicht nur) zwei Tabellen
tbl_Material mit folgenden Spalten
| idMateria | Autowert | Primärschlüssel |
| Bezeichnung | Text | - |
| Beschreibung | Text | |
| idRaum | Zahl | verweißt auf tbl_Raum |
| idKlassenstufe | Zahl | verweißt auf tbl_Klasse |
| idVollständig | Zahl | verweißt auf tbl_Vollstaendig |
| idBestellung | Zahl | verweißt auf tbl_Bestellung |
| Datum_Check | Datum/Uhrzeit | kann gesetzt werden |
| idFunktionalitaet | Zahl | verweißt auf tbl_Status |
| idBild | Zahl | verweißt auf tbl_Bild |
tbl_Raum
| idRaum | Autowert | Primärschlüssel |
| Raum | Text | Raumbezeichnung |
soweit, so gut..
In der Tabelle Material sind sämtliche Materialien gelistet. Es gibt dann auch Mehrfacheinträge.
Nun wollte ich eine Abfrage basteln, bei der ermittelt wird, welche Materialien sind wie oft in welchem Raum.
Und da klemmt es...
SQL sieht so aus:
SELECT tbl_Material.Bezeichnung, tbl_Material.Beschreibung, tbl_Raum.Raum, Sum(tbl_Material.Bezeichnung) AS SummevonBezeichnung
FROM tbl_Raum INNER JOIN tbl_Material ON tbl_Raum.idRaum = tbl_Material.idRaum
GROUP BY tbl_Material.Bezeichnung, tbl_Material.Beschreibung, tbl_Raum.Raum
ORDER BY tbl_Raum.Raum;
Wenn ich das aber jetzt aufrufe, schmeißt er mir einen Fehler: Datentypen im Kriterienausdruck unveträglich.
Wenn ich das ganze ohne Summe laufen lasse, klappt es.
SQL:
SELECT tbl_Material.Bezeichnung, tbl_Material.Beschreibung, tbl_Raum.Raum
FROM tbl_Raum INNER JOIN tbl_Material ON tbl_Raum.idRaum = tbl_Material.idRaum
GROUP BY tbl_Material.Bezeichnung, tbl_Material.Beschreibung, tbl_Raum.Raum
ORDER BY tbl_Raum.Raum;
Hat jemand eine Idee, wo der Haken ist...?
Danke für eure Hilfe schon mal,
Noreen
Hab die Lösung gerade selbst gefunden....
Wie blond... ;-)
Es muss natürlich nicht Summe (Sum) heißen, sondern Anzahl (Count)...
Tsss...
Danke allen, die schon am denken waren.... :-)
Noreen
Hallo,
ZitatIn der Tabelle Material sind sämtliche Materialien gelistet. Es gibt dann auch Mehrfacheinträge.
Du hast ein Datenmodellproblem.
In der Materialtabelle darf es keine Mehrfacheinträge geben. Die Materialtabelle ist die Stammdatentabelle und darin sind Mehrfacheinträge unzulässig.
Dir fehlt noch eine Tabelle um das Material dem Raum zuzuordnen. Das ist eine klassische n:m Beziehung. In der fehlenden Tabelle wird die MaterialID und die RaumID jeweils als Fremdschlüssel gespeichert. Das Gleiche gilt sinngemäß auch für die Klassenstufe.
Dass das Datenmodell falsch ist, erkennt man auch klar an den 3 Feldern zur Gruppierung. Bei korrektem Datenmodell wäre nur ein Feld zur Gruppierung notwendig und das wäre dann die ID.
Hallo MzKlMu (lustiger Name.... ;-) ),
ich hab nur die Tabellen angegeben, die für diese Abfrage notwendig waren. Es gibt in der Tat noch mehr. Es gibt noch eine Raumtabelle, eine Klassenstufentabelle, eine Tabelle für den Shop (wo man die Materialien kaufen kann) und noch je eine Tabelle für die Vollständigkeit der Materialien und eine für die Funktion.
Das Entity-Relation-Ship - Modell und Normailsierungen sind mir bekannt.... ;-)
Aber in der Tat, könnte man (frau auch... ;-) ) noch überlegen, ob man noch eine Tabelle für die Bezeichnung erstellt, da diese mehrfach auftacht und somit nicht atomar ist... Aber das wäre dann mit Kanonen auf Spatzen und so... ;-)
Trotzdem danke für deinen Hinweis!
Grüße, Noreen