Laden...

SQL - Statement gesucht

Erstellt von M@TUK vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.399 Views
M
M@TUK Themenstarter:in
402 Beiträge seit 2005
vor 16 Jahren
SQL - Statement gesucht

Hi!

Ich bin auf der Suche nach einem SQL-Statement für eine bestimmte Abfrage und
komm einfacht nicht drauf wie das gehen kann/soll.

Gegeben:

Tabelle 1: mytable

id | name | feldx .....feldn

Tabelle 2: mystatus
id | mytable_id | datum | status | feldx .... feldn

In der Tabelle mystatus sind zu den jeweiligen Datensätzen aus Tabelle mytable
Status-Einträge gespeichert. Eine typische 1:n - Beziehung.
Ich möchte nun mit einem SQL-Statement folgendes abfragen:
Und zwar den Datensatz mit id "x" aus der Tabelle "mytable" und
den (dazugehörigen) Eintrag aus Tabelle "mystatus". Das können jetzt ja viele sein,
ich möchte aber zb. nur den Eintrag mit dem jüngsten Datum (akutellster Status).

Ein simpler Join mit group by bringt mir nicht (immer) das richtige Resultat
und ein ORDER greift ja erst nach dem Join...

Irgendwie komme ich nicht weiter.
Vielen Dank schon mal für die Anregungen...

lg
M@TUK

563 Beiträge seit 2004
vor 16 Jahren

Hallo M@tuk


SELECT
  mytable.*,
  mystatus.*
FROM
  mytable
  INNER JOIN mystatus ON mytable.id = mystatus.mytable_id
ORDER BY
  mystatus.datum DESC
WHERE
  mytable.id = x

Wenn du den jüngsten willst dann brauchst du nur noch nen TOP 1

Gruss,
Tobi

M
M@TUK Themenstarter:in
402 Beiträge seit 2005
vor 16 Jahren

Hi!

Danke, das funktioniert...

Wie würde das Statement aber aussehen (müssen), wenn ich
nicht nur einen Datensatz (WHERE mytable.id =x) sondern
alle Datensätze der Tabelle mytable mit dem aktuellesten Status haben möchte.

lg
M@TUK

S
489 Beiträge seit 2007
vor 16 Jahren

Original von M@TUK
Hi!

Danke, das funktioniert...

Wie würde das Statement aber aussehen (müssen), wenn ich
nicht nur einen Datensatz (WHERE mytable.id =x) sondern
alle Datensätze der Tabelle mytable mit dem aktuellesten Status haben möchte.

lg
M@TUK

Indem Du Deine WHERE Klausel entsprechend änderst! Wir sind eigentlich nicht da um Grundlagen zu vermitteln, egal welcher Art. Wie herbivore immer gerne sagt, es wird von Dir erwartet, dass Du Dir die Grundlagen selbst beibringst.

M
M@TUK Themenstarter:in
402 Beiträge seit 2005
vor 16 Jahren

Hi!

Vielen Dank, SeboStone.
Dein Beitrag hat mir wirklich sehr geholfen.
Besser Du würdest die Grundlagen des lesen... ach wozu sich aufregen...

Ich hab mir nun mal selber eine Lösung gebastelt, bin mir aber nicht sicher
ob sie auch ausserhalb von Access duck läuft....


SELECT 
   mytable.id, 
   mytable.name,
   Last(mystatus.status) AS LetzterWertvonstatus, 
   Last(mystatus.datum) AS LetzterWertvondatum
FROM mytable
INNER JOIN mystatus ON mytable.id = mystatus.mytable_id
GROUP BY mytable.id;