Odium: SQL-Anfrage liefert zu viele Daten...

Beitrag lesen

Hallo,

ich habe ein kleines Problem mit einer SQL-Abfrage unter MS-SQL Server.
Ich habe mehrere Tabellen...
tblGeraete - diese Tabelle enthält einzelne Geräteinformationen
tblGerTyp - Tabelle enthält Typinformationen des Gerätes z.B. Pentium 200
tblGerKlasse - enthält Klasseninformationen des Gerätes z.B. Laserdrucker
tblHistorie - diese Tabelle enthält Historieninformationen zu den Geräten, hier können beliebig viele Informationen zu den einzelnen Geräten enthalten sein.

verknüpft sind alle diese Tabellen über das Feld Geraete_ID, dies ist die ID der Tabelle tblGeraete und wird in alle anderen Tabellen in die entsprechenden Datensätze eingesetzt.

Nun habe ich eine SQL-Abfrage, die mir von jedem Gerät die Bezeichnung, Klasse, Typ ,Seriennummer, MAC und die Anzahl der Einträge in der Tabelle Historie anzeigt...
Funktioniert alles in allem, aber ich erhalte zuviele Einträge...
Manche Geräte die mehrere Einträge in der tblHistorie haben, werden genauso oft angezeigt, aber mit unterschiedlicher Anzahl der Historieneinträge z.B. Gerät test123 hat 3 historieneinträge, nun erscheint in meiner abfrage das gerät drei mal... zweimal ist der angezeigte historienwert 1 und einmal 3.... manche erscheinen mehrfach aber immer mit dem hsitorienwert 1 und manache sind scheinbar OK...

hier mal die abfrage:

select distinct tblGeraete.Geraete_ID, tblGeraete.Seriennummer, tblGeraete.Verwaltungsbez1, tblGeraete.MAC, tblGerKlasse.Beschreibung, tblGerTyp.Beschreibung, tblHistorie.Ausg_am, tblGeraete.GerKlasse_ID, count(tblHistorie.Geraete_ID) from tblGeraete, tblGerKlasse, tblGerTyp, tblHistorie WHERE tblGeraete.GerKlasse_ID = tblGerKlasse.GerKlasse_ID AND tblGeraete.GerTyp_ID = tblGerTyp.GerTyp_ID AND tblGeraete.Geraete_ID = tblHistorie.Geraete_ID GROUP BY tblGeraete.Geraete_ID, tblGeraete.Seriennummer, tblGeraete.Verwaltungsbez1, tblGeraete.MAC, tblGerKlasse.Beschreibung, tblGerTyp.Beschreibung, tblHistorie.Ausg_am, tblGeraete.GerKlasse_ID ORDER BY tblGeraete.GerKlasse_ID, tblGeraete.Verwaltungsbez1, tblGeraete.Geraete_ID

die große anzahl der splaten in der group by klausel liegt daran, das sich der sql-server aufgeregt hat, das bei einem count(Aggregatfunktion) die werte gruppiert werden müssen...so hab ich der reihenfolge der fehlermeldungen die felder ins group by aufgenommen....

hat wer einen plan, was hier zu machen ist?

Momentan weiß ich nicht weiter....

Vielen Dank

Odium