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

Beitrag lesen

Hallo Andre,

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.

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

Ich nehme mal an, dass die zu große Anzahl an Datensätze, die dieses SQL-Statement zurückgibt daranliegt, dass du das Feld tblHistorie.Ausg_am selektierst und darüber gruppierst.
Wenn zu einer GeraeteID 3 Einträge im tblHistorie vorliegen,
haben diese wahrscheinlich alle ein unterschiedliches Ausgabedatum (ich nehme an Ausg_am = Ausgabedatum), also erhältst du auch 3 Datensätze aus deiner SQL-Abfrage. Lass das Feld einfach weg, oder selektiere das Maximum dieses Feldes, wie Frank Jonas vorgeschlagen hat.

Gruß
Stefan