Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Problem bei Abfrage

Begonnen von Noreen, Oktober 26, 2012, 10:00:34

⏪ vorheriges - nächstes ⏩

Noreen

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

idMateriaAutowertPrimärschlüssel
BezeichnungText-
BeschreibungText
idRaumZahlverweißt auf tbl_Raum
idKlassenstufeZahlverweißt auf tbl_Klasse
idVollständigZahlverweißt auf tbl_Vollstaendig
idBestellungZahlverweißt auf tbl_Bestellung
Datum_CheckDatum/Uhrzeitkann gesetzt werden
idFunktionalitaetZahlverweißt auf tbl_Status
idBildZahlverweißt auf tbl_Bild

tbl_Raum

idRaum Autowert Primärschlüssel
RaumTextRaumbezeichnung

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

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

MzKlMu

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.
Gruß Klaus

Noreen

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