12.1k Aufrufe
Gefragt in Datenbanken von
Hallo,

ich möchte eine Abfrahe erstellen mittels der das letzte Passwort angezeigt werden soll.

Allerdings werden bei mir alle Werte aus der Datenbank angezeigt

Bisher bin ich soweit:

http://img199.imageshack.us/img199/2790/unbenanntals.jpg

Was muss ich machen, bzw wie muss ich die Einstellungsn ändern, damit nur das jüngste Passwort angezeigt wird?



MfG Hans

6 Antworten

0 Punkte
Beantwortet von marie Experte (2k Punkte)
versuch das mal.

SQL = "SELECT * FROM tblDeineTabelle WHERE datum = (SELECT max(datum) FROM tblDeineTabelle)"


Gruß marie
0 Punkte
Beantwortet von marie Experte (2k Punkte)
habs jetzt ausprobiert, ging komischerweise nur so:

SELECT deinetabelle.Feld1, *
FROM deinetabelle
WHERE (((deinetabelle.datum)=(SELECT Max(datum) from deinetabelle)));


nochmal gruß Marie
0 Punkte
Beantwortet von marie Experte (2k Punkte)
oder natürlich
SELECT deinetabelle.*
FROM deinetabelle
WHERE (((deinetabelle.datum)=(SELECT Max(datum) from deinetabelle)));
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo hans_99,

ich greife zu einem etwas "unsauberen" Trick für MS Access (Oracle lässt z.B. da andere Dinge zu), er funktioniert aber. Ich baue mir aus der ID des Accouts und dem jüngsten Datum einen "Zwischenschlüssel", der dann, angewandt auf die Tabellen das gewünschte Ergebnis liefert. Meine Feldnamen in deine zu übersetzen, sollte ein leichtes sein.
SELECT tbl_Account.Vorname, tbl_daten.Passwort, tbl_A_D.Datum
FROM tbl_daten INNER JOIN (tbl_Account INNER JOIN tbl_A_D ON tbl_Account.ID_A = tbl_A_D.ID_Account) ON tbl_daten.ID_D = tbl_A_D.ID_Daten
WHERE ((([ID_A] & "#" & [Datum]) In (SELECT tbl_A_D.ID_Account & "#" & Max(tbl_A_D.Datum) AS unsaubererKey
FROM tbl_A_D
GROUP BY tbl_A_D.ID_Account)));

Gruß
Ralf
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo hans_99,

noch ein Nachtrag. Sollte ein "Account" sein Passwort an einem Tag zwei Mal ändern, bekommst du mit meiner Lösung auch zwei Datensätze. Falls du dann nur einen Datensatz haben willst, muss ich noch mal nachdenken. Eine unschöne Lösung wäre, ein eindeutigen Schlüssel auf die ID_Account und das Datum zu legen. Aber wenn ein Anwender eine Grund hat, sein PW am Tag zwei Mal zu ändern, sollte man ihn das auch machen lassen. Sag' einfach mal, wie du das siehst und ob mein Kösungsvorschlag passt.

Gruß
Ralf
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo hans_99,

hier noch eine Version ohne "unsauberen Trick".
SELECT ta.Vorname, tad.Datum, td.Passwort
FROM tbl_daten AS td INNER JOIN
(tbl_Account AS ta INNER JOIN tbl_A_D AS tad ON ta.ID_A = tad.ID_Account)
ON td.ID_D = tad.ID_Daten
WHERE EXISTS ( SELECT *
FROM (SELECT ID_Account,max(datum) as d
FROM tbl_A_D GROUP BY ID_Account) as tad2
where tad.ID_Account = tad2.ID_Account and tad.datum = tad2.d
)
Dafür ist allerdings die SQL-Syntax etwas komplexer ;-) Allerdings hast du auch hier das Problem, wenn das PW an eiem Tag zweimal gewechselt wird.

Gruß
Ralf
...