matthiasr Geschrieben 18. Februar 2003 Teilen Geschrieben 18. Februar 2003 Hallo, also ich habe Access 2000 und möchte aus verschiedenen Tabellen Daten abfragen. Jeder Datensatz hat ein Datum der als Schlüssel verwendet wird. Nun möchte ich z.B. alles rund um den 1.10.00 wissen, das heißt wenn ich in einer Tabelle dieses Datum nicht finde das ich den vorherigen, sprich den nächst älteren Datensatz erhalten möchte. Wie stell ich das an? Ich habe zwar Kenntnisse aber die verrotten etwas und muss erst wieder warm werden, aber das dauert. Währe über Eure Hilfe sehr dankbar. Matthias Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Reinhold Geschrieben 18. Februar 2003 Teilen Geschrieben 18. Februar 2003 Originally posted by matthiasr ich habe Access 2000 und möchte aus verschiedenen Tabellen Daten abfragen. Jeder Datensatz hat ein Datum der als Schlüssel verwendet wird. Nun möchte ich z.B. alles rund um den 1.10.00 wissen, das heißt wenn ich in einer Tabelle dieses Datum nicht finde das ich den vorherigen, sprich den nächst älteren Datensatz erhalten möchte. Wie stell ich das an? Du kannst als Kriterium des Datumfelds angeben "<= #1.10.2000#" und absteigend nach dem Datumsfeld sortieren, dann steht der richtige Datensatz oben in der Liste. Falls du nur diesen einen einzigen Datensatz willst, kannst du das noch mir "TOP 1" eingrenzen. hth Reinhold Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
matthiasr Geschrieben 18. Februar 2003 Autor Teilen Geschrieben 18. Februar 2003 Ja, das würde schon funktionieren aber mein Problem ist das ich z.B. die Tabelle Pro habe in der am 1.10.02 die Version 1.01 rausgegeben wurde, weitere Versionen wurden in unregelmäßigen Abständen veröffentlicht. Die zweite Tabelle Lite, hat die selbe Form nur mit anderen Daten, das Ausgabedatum entspricht erst ab Version 2.02 der selben wie in der Tabelle Pro. Es folgen dann noch fünf Tabellen die nach Software einer bestimmten Software aufgeteilt sind. Tabelle 1 Boot, Tabelle 2 Softteil usw. diese Tabellen enthalten den Namen der Datei und das Datum. So nun brauche ich nach der eingabe eines Datums die Pro-Version, die Lite-Version und die Dateien die vor diesem Datum akuell waren. Desweiteren benötige ich eine Abfrage nach dem Kriterium der Pro-Version bzw. der Lite-Version. Vieleicht habe ich ja die falsche Überlegung aber ich bin so vorgegangen das ich eben erwähnte Tabellen mit einer Tabelle Datum, in der nur die Datumangaben vom 01.01.97 bis 01.01.04 gespeichert sind, verknüpft habe. Ich bin nun soweit das ich mit einer "normalen" Abfrage alle Datumsangaben von einem bestimmten Datum ab an sehe, alle Versionen von Pro, Lite und den Dateien aber eben auch ne Menge an Datenmüll allo z.B. am 15.08.00 gibt es keinen Datensatz für Pro, Lite und einer Datei. Diese möchte ich noch ausblenden, oder so. Vieleicht hilfts wenn ich den SQL-Code poste. SELECT Datum.Datum, InkaPro.Version, InkaLite.Version, [00].Name FROM ((Datum LEFT JOIN 00 ON Datum.Datum = [00].Datum) LEFT JOIN InkaLite ON Datum.Datum = InkaLite.Ausliefer_Datum) LEFT JOIN InkaPro ON Datum.Datum = InkaPro.Ausliefer_Datum GROUP BY Datum.Datum, InkaPro.Version, InkaLite.Version, [00].Name ORDER BY Datum.Datum DESC; Vieleicht kannst Du mir weiterhelfen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Der Kleine Geschrieben 18. Februar 2003 Teilen Geschrieben 18. Februar 2003 Wenn ichs richtig verstanden habe, musst du mal unter Unions - Abfragen suchen. Da kannst du die Daten aus verschiedenen Tabellen hintereinander schreiben. Es muessen nur die Anzahl der Felder übereistimmen. select * from erste_tabelle union select * from zweite_tabelle; Dann kannst du aufbauend auf dieser Zusammenstellung in einer weiteren Abfrage deine Sortierung und deine Filterung (where - Klausel) durchführen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
matthiasr Geschrieben 18. Februar 2003 Autor Teilen Geschrieben 18. Februar 2003 Ich behaupte das ich es prinzipiell verstanden habe, aber die Ausführung macht mir noch sorgen, SELECT Datum.Datum, InkaPro.Version, InkaLite.Version FROM Datum INNER JOIN InkaPro ON Datum.Datum = InkaPro.Ausliefer_Datum WHERE (((Datum.Datum)>=#1/1/1997#)) union Select all Datum.Datum, InkaPro.Version, InkaLite.Version FROM Datum INNER JOIN InkaLite ON Datum.Datum = InkaLite.Ausliefer_Datum where (((Datum.Datum)>=#1/1/1997#)) GROUP BY Datum.Datum, InkaPro.Version; Was ist falsch? Also ich werde zuerst über die Parametereingabe nach der Pro-Version, dann nach der Lite-Version und dem Datum gefragt, darauf hin erhalte ich eine Spalte mit teilweisen neuen Datumangaben mit sechs 1.00 Pro-Versionen und #Name? als Lite-Version. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Der Kleine Geschrieben 18. Februar 2003 Teilen Geschrieben 18. Februar 2003 Du kannst zur Probe die einzelenen Abfragen getrennt (mit der Abfrageansicht) zusammenstellen und wenn du jeweils die richtigen Teilergebnisse ermittelt hast, zur union - Abfrage zusammenstellen. Du solltest folglich aus jeder Tabelle die richtigen Werte ermitteln : Select datum, feldname from tabellenname Das ganze für jede Tabelle. Die von dir benutzten Verknüpfungen würde ich entsprechend weglassen (inner joins). Sicherlich ist es sinnvoll als Ergebnis die verschiedenen Versionen Nebeneinander zusehen mit erster Spalte als Datum. (Also wie im Excel oben die Versionen, erste Spalte entsprechendes Datum) Das könnte so ähnlich funktionieren : Select datum, version,"","","","" from inkalite WHERE Datum>=#1/1/1997# union select datum,"",version,"","","" from inkapro WHERE Datum>=#1/1/1997# union select datum,"","",version,"","" from inkasoft WHERE Datum>=#1/1/1997# union select datum,"","","",version,"" from inkavier WHERE Datum>=#1/1/1997# union select datum,"","","","",version from inkafuenf WHERE Datum>=#1/1/1997# order by datum; Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
matthiasr Geschrieben 18. Februar 2003 Autor Teilen Geschrieben 18. Februar 2003 Erstmals vielen Dank. Leider kann ich Dir erst morgen bescheidgeben ob es auch klappt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
matthiasr Geschrieben 19. Februar 2003 Autor Teilen Geschrieben 19. Februar 2003 So, langsam werde ich wieder warm. Das mit Union funktioniert, allerdings ist es nicht das was ich brauche. Ich brauche für die Pro-Version, für die Lite-Version und für die Soft-Versionen eingene Spalten so das ich mit einer Abfrage alle Tabellen einträge für den bestimmten Zeitraum überblicken kann. Wie bereits erwähnt hatte ich schon fast diese Ergebnis, aber es sind eben Daten sätze vorhanden in denen weder eine Pro-, eine Lite- oder eine Soft-Version vorhanden ist. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Der Kleine Geschrieben 20. Februar 2003 Teilen Geschrieben 20. Februar 2003 Du hast doch 6 Spalten für Datum und die 5 Tabellen. Falls ich jetze aber richtig verstehe irgendwas in der Art von : Select datum, version,"","" from inkalite WHERE Datum>=#1/1/1997# union select datum,"",version,"" from inkapro WHERE Datum>=#1/1/1997# union select datum,version,"",softteil from Boot WHERE Datum>=#1/1/1997# and name="Lite" union select datum,"",version,softteil from boot WHERE Datum>=#1/1/1997# and name = "Pro" ... order by datum; Sprich 2 Tabellen mit der endgültigen version und 5 weitere Tabellen mit einzelnen Abschnitten für die jeweiligen beiden Versionen. ... steht für die 4 fehlenden Tabellen. (jeweils die letzten beiden Union select - Anweisungen) softteil ist der Part aus den 5 weiteren tabellen, der in der speziellen Version(snummer) für die jeweilige Version (inkapro und inkalite) erstellt wurde. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.