Zum Inhalt springen

Access Abfrage mittels Datum


matthiasr

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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;

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...