Abfrage letzter Einträge

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

emtewe
**
Beiträge: 26
Registriert: Di, 05.06.2007 16:19

Abfrage letzter Einträge

Beitrag von emtewe »

Ich bin dabei mit Open Office Base eine Datenbank zu basteln, und stehe jetzt vor folgendem Problem:

Ich habe Einträge mit Namen und Datum, und es kann zum gleichem Namen Einträge zu verschiedenen Zeitpunkten geben. Nehmen wir an ich habe folgende Einträge in der Datenbank:

AAA 01.01.01 weitere Daten
DDD 01.01.01 weitere Daten
EEE 01.01.01 weitere Daten
HHH 03.01.01 weitere Daten
DDD 03.01.01 weitere Daten
AAA 04.01.01 weitere Daten
EEE 04.01.01 weitere Daten
AAA 02.01.01 weitere Daten
DDD 05.01.01 weitere Daten

Jetzt möchte ich in einer Abfrage, gefiltert jeweils nur die letzten Einträge zu einem Namen haben, also praktisch diese Liste:

HHH 03.01.01 weitere Daten
AAA 04.01.01 weitere Daten
EEE 04.01.01 weitere Daten
DDD 05.01.01 weitere Daten

von allen Einträgen zu einem Namen jeweils nur der letzte.
Hat jemand eine Idee wie ich das mit Bordmitteln (Sortieren/Filter/SQL) lösen kann.

Ich nutze Open Office 2.2.0 mit interner HSQL.

Gruß
emtewe
NTClient
****
Beiträge: 106
Registriert: Di, 19.07.2005 16:09

Abfragefunktion

Beitrag von NTClient »

Kann man nicht einfach die Tabelle in den Abfrageebtwurf holen und dann
, dann die beiden Spalten "Name" und "Datum" abfragen und zwar mit den Funktionen: Spalte "Name" gruppiert und die Spalte "Datum" mit Maximum?

Gruß Bernd!
emtewe
**
Beiträge: 26
Registriert: Di, 05.06.2007 16:19

Beitrag von emtewe »

Hmm, ich kann einen Wert mit dem Format "Datum" irgendwie nicht als Maximum auswählen...

Weder mit dem Abfrage-Assistenten, noch im Entwurfsmodus.

Gruß
emtewe

PS: Habe gerade im Buch "Datenbanken mit OpenOffice.org 2.0" von Thomas Krumbein den Hinweis gefunden (S.203) dass Aggregatsfunktionen nur mit numerischen Werten möglich sind :-(
emtewe
**
Beiträge: 26
Registriert: Di, 05.06.2007 16:19

Beitrag von emtewe »

So, ich habe jetzt eine Abfrage im Entwurfsmodus erstellt, die Namen werden gruppiert (Funktion Gruppierung) und das Datum steht auf Maximum (Funktion Maximum).

Es funktioniert soweit, nur wie kann ich jetzt weitere Daten anzeigen lassen?

Wenn ich weitere Spalten hinzufüge, dann muss ich die auch gruppieren, und dann können plötzlich wieder mehr Einträge mit einem Namen auftauchen.

Gruß
emtewe
berndkli
*****
Beiträge: 289
Registriert: Di, 12.04.2005 22:05

Beitrag von berndkli »

Hallo emteve

Erstelle zunächst eine Tabellenansicht mit den Spalten Name und Datum und wende die Funktionen Gruppierung und Max an.
Dann baust du dir eine Abfrage mit den Spalten Name und Datum aus der Tabellenansicht und den übrigen Datenspalten aus der eigentlichen Tabelle.
Verknüpfe die beiden Tabellen über die Datumsspalte.

Gruss Bernd
emtewe
**
Beiträge: 26
Registriert: Di, 05.06.2007 16:19

Beitrag von emtewe »

Danke, werde ich Freitag probieren...

Gruß
Michael
NTClient
****
Beiträge: 106
Registriert: Di, 19.07.2005 16:09

Mit der zweiten Abfrage, das hätte ich auch so gemacht, ...

Beitrag von NTClient »

... aber weiß eigentlich immer noch niemand, wie ich in einer Abfrage Daten eingeben oder ergänzen kann?
Gruß Bernd!
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Beitrag von Barlee »

Hallo emtewe, bernd(kli),

@emtewe: folgende Abfrage könnte für Dich als Arbeitsgrundlage dienen. Sie ist die Umsetzung von Bernd's Vorschlag.
@Bernd: Eine Verknüpfung über die Datumsspalte reicht m.E. nicht aus. Das würde dazu führen, dass einige Daten dem falschen Namen zugeordnet werden. Bsp.

folgende Ausgangsdaten:
AAA 04.01.01 A1
EEE 04.01.01 E2

führen bei Verknüpfung nur über die Datumsspalte zu folgendem Ergebnis:
EEE 04.01.01 A1
EEE 04.01.01 E2
AAA 04.01.01 A1
AAA 04.01.01 E2

Daher sollte auch der Name einbezogen werden.

Code: Alles auswählen

select
a.Name,
a.Datum,
b.Daten

from

(Select Name, max(Datum) as Datum from EMTEWE group by Name) a,
(Select Name, Daten, max(Datum) as Datum from EMTEWE group by Name, Daten) b

where 

a.Name = b.Name and 
a.Datum = b.Datum
Gruß Barlee
berndkli
*****
Beiträge: 289
Registriert: Di, 12.04.2005 22:05

Beitrag von berndkli »

Hallo Barlee
@Bernd: Eine Verknüpfung über die Datumsspalte reicht m.E. nicht aus. Das würde dazu führen, dass einige Daten dem falschen Namen zugeordnet werden.
Hast recht. Hab ich falsch gedacht.

Der letzte Satz in meinem Posting von 16:48 muss demnach lauten:
Verknüpfe die Tabellen über die Datum- und Namenspalten.

Gruss Bernd
emtewe
**
Beiträge: 26
Registriert: Di, 05.06.2007 16:19

Re: Abfrage letzter Einträge

Beitrag von emtewe »

Ich habe das jetzt wie beschrieben probiert:

1. Ich habe eine Abfrage erstellt nur aus den Spalten Name und Datum, und habe mit Gruppieren und Max das ganze nach dem Datum sortiert. Diese Tabelle sieht so aus wie es mir vorgestellt habe, nur muss ich beim Öffnen der Abfrage das Format des Datums neu einstellen, weil dort nur Zahlen stehen. Diese Abfrage habe ich "Letzte Einträge" genannt.

2. Jetzt habe ich eine neue Abfrage im Entwurfsmodus erstellt, habe dort die ursprüngliche Tabelle mit allen Daten, sowie die Abfrage "Letzte Einträge" geöffnet, und habe über "Einfügen - neue Relation" die Spalten "Name - Name" und die Spalten "Datum - MAX (Datum)" verbunden.

...leider bekomme ich jetzt, immer wenn ich speichern möchte oder die Vorschau mit F4 aktiviere, die Meldung "Syntax Error in SQL Expression"

Lasse ich die Verknüpfung über das Datum weg, funktioniert es, allerdings nur mit den hier schon angedeuteten Fehlern, die Verknüpfung nur über den Namen reicht nicht aus.

Kann dies daran liegen dass das Datumsformat in der Abfrage "Letzte Einträge" sich irgendwie durch die MAX-Gruppierung verändert hat?

viele Grüße, und Danke schonmal an alle die sich hier beteiligen
Michael
berndkli
*****
Beiträge: 289
Registriert: Di, 12.04.2005 22:05

Re: Abfrage letzter Einträge

Beitrag von berndkli »

Hallo Michael
emtewe hat geschrieben:Ich habe eine Abfrage erstellt nur aus den Spalten Name und Datum,
Du must eine TABELLENANSICHT erstellen.Das findest du unter Tabellen=> Aufgaben =>Ansicht erstellen.
Öffne dann eine Abfrage im Entwurfsmodus, öffne deine Tabelle und die Ansicht "Letzte Eintäge",
klicke in "Letzte Einträge" auf die Datumsspalte und ziehe sie auf die Datumsspalte der Tabelle. Mit der Namensspalte verfährst du genauso.


Gruss Bernd
emtewe
**
Beiträge: 26
Registriert: Di, 05.06.2007 16:19

Re: Abfrage letzter Einträge

Beitrag von emtewe »

Danke, das wars. Mit der Änderung funktionierts wie zuvor beschrieben...

Gruß
Michael
Gert Seler
*******
Beiträge: 1763
Registriert: Di, 03.10.2006 18:05

Re: Abfrage letzter Einträge

Beitrag von Gert Seler »

Hallo emtewe,
Du solltest unbedingt den "Namen" entsprechende "Kundennummern" zuweisen, damit werden spätere Namensgleichheiten z.B. Klaus Zweimal (sen)
und Klaus Zweimal (jun) vermieden.
Die Zahlen beim "Datum" sind richtig, denn das Datum wird ab dem 31-12-1899 aufsteigend hochgezählt.

mfg
Gert
Es gibt nichts gutes, außer man tut es.
Win7_64 / LO_4.4.5.2
emtewe
**
Beiträge: 26
Registriert: Di, 05.06.2007 16:19

Re: Abfrage letzter Einträge

Beitrag von emtewe »

Danke für den Hinweis, aber die Namen in der Liste beziehen sich auf eindeutige Objekte, d.h. jeder Name steht für genau ein Objekt. Den Objekten können verschiedene Ereignisse zu verschiedenen Terminen zugeordnet sein, und manchmal brauche ich halt eine Liste mit allen letzten Ereignissen für alle Objekte, dafür diese Abfrage.

Es läuft inzwischen auch richtig gut...

Das nächste Problem das auch mich zukommt ist eine Abfrage mit variablen Grenzwerten, dh. ich brauche ein Formular in das ich eine Ober- und Untergrenze eingeben kann, welches mir dann alle dazwischen liegenden Einträge als Tabelle liefert... aber ich schau erstmal wie weit ich selber komme, das ist sicher besser zum Lernen, und wenn ich nicht weiterkomme schau ich hier nochmal vorbei. Prima Forum übrigens!

Gruß
Michael
emtewe
**
Beiträge: 26
Registriert: Di, 05.06.2007 16:19

Re: Abfrage letzter Einträge

Beitrag von emtewe »

So, nächstes Problem:

Ich habe nun versucht die gleichen Schritte auf einer MySQL Datenbank zu wiederholen, aber leider taucht dort das ursprüngliche Problem wieder auf. Wenn ich eine Tabellenansicht erstelle, bekomme ich wieder das Problem mit dem Datum welches in eine Zahl umgewandelt wird...

Komischerweise sieht die Tabellenansicht, was das Symbol betrifft, dort auch genauso aus wie eine Tabelle.

Gruß
emtewe
Antworten