donchunior
Goto Top

Passende SELECT-Abfrage gesucht

Hallo liebe Datenbank-Admins,

ich habe diese Frage bereits in einem anderen Forum gestellt.
Da sich dort aber überwiegend CAD-Anwender aufhalten, hielt ich es für sinnvoll, die Frage noch woanders zu stellen.
Sorry also für den Doppel-Post!

Nun zum Thema ...

Ich dachte erst, es wäre eine einfache Aufgabenstellung, jedoch konnte ich bisher keine passende Lösung finden.

Gegeben sei folgende Tabelle namens Dokumente:

+------------+--------------+---------+
| DokumentNr | ErstellDatum | Sprache |
+------------+--------------+---------+
| 1          | 2015-01-28   | de      |
+------------+--------------+---------+
| 1          | 2015-01-28   | en      |
+------------+--------------+---------+
| 1          | 2015-01-27   | de      |
+------------+--------------+---------+
| 1          | 2015-01-26   | en      |
+------------+--------------+---------+
| 1          | 2015-01-01   | fr      |
+------------+--------------+---------+
| 2          | ...          | ...     |
+------------+--------------+---------+
| ...        | ...          | ...     |
+------------+--------------+---------+

Ich benötige nun eine Abfrage, die mir folgendes Ergebnis liefert:
Alle aktuellen (d. h. das neueste Datum) Dokumente des Dokuments mit der Nummer 1, von all seinen verfügbaren Sprachen.

Das Dokument mit der Nummer 1 gibt es in den Sprachen de, en und fr. Von de und en gibt es zwei, davon möchte ich jeweils das neueste.
Das erwartete Ergebnis des SELECTs wäre somit folgendes:


+------------+--------------+---------+
| DokumentNr | ErstellDatum | Sprache |
+------------+--------------+---------+
| 1          | 2015-01-28   | de      |
+------------+--------------+---------+
| 1          | 2015-01-28   | en      |
+------------+--------------+---------+
| 1          | 2015-01-01   | fr      |
+------------+--------------+---------+

Aber wie muss nun die SELECT-Abfrage aussehen, so dass ich das gewünschte Ergebnis erhalte?

Gruß, DonChunior

Content-Key: 261380

Url: https://administrator.de/contentid/261380

Printed on: April 25, 2024 at 11:04 o'clock

Member: ITvortex
ITvortex Jan 28, 2015 updated at 07:47:16 (UTC)
Goto Top
Hallo,

ungetestet
SELECT * FROM Dokumente WHERE ErstellDatum = (SELECT MAX(ErstellDatum) FROM Dokumente) AND DokumentNr = 1;


Deine Ausgabe zu deinem gewünschten Ergebnis ist falsch!
Du schreibst das du das neueste (aktuellste) Datum haben willst, und da 2015-01-28 das aktuellste ist darf 2015-01-01 nicht vorkommen!

Liebe Grüße
ITvortex

PS: Vergiss das bitte, hab das mit den Sprachen überlesen face-smile
Member: Reinartz
Reinartz Jan 28, 2015 at 07:51:03 (UTC)
Goto Top
Ich würde mal so starten

Select DokumentNr , Max(Erstelldatum) , Sprache from Dokumente
group by DokumentNr

und mich dann herantasten
guck mal hier : http://www.w3schools.com/sql/default.asp
da findest du eigentlich alle erklärungen
Member: DonChunior
DonChunior Jan 28, 2015 at 08:46:09 (UTC)
Goto Top
Hallo ITvortex,

leider führt deine SELECT-Abfrage nicht zu meinem gewünschten Ergebnis.
Die Sprache fr ist nicht im Ergebnis.

Gruß, DonChunior
Member: LianenSchwinger
Solution LianenSchwinger Jan 28, 2015 updated at 10:49:28 (UTC)
Goto Top
Hallo DonChunior,

versuch mal

SELECT b.DokumentNr, b.Sprache, max(b.ErstellDatum) AS ErstellDatum
FROM Dokumente AS b 
WHERE b.DokumentNr = '1'  
GROUP BY b.DokumentNr, b.Sprache

Wenn Du die WHERE-Bedingung weglässt bekommst Du für jede Dokumentennummer das jeweils neueste Sprachdukument.

G Jörg
Member: DonChunior
DonChunior Jan 28, 2015 at 09:19:18 (UTC)
Goto Top
Hallo zusammen,

ich habe nun die Lösung für die Fragestellung:
<code="plain">SELECT DokumentNr, MAX(ErstellDatum) AS ErstellDatum, Sprache FROM Dokumente WHERE DokumentNr=1 GROUP BY DokumentNr, Sprache

Interessanterweise kam der entscheidende Hinweis nun doch aus dem CAD-Anwenderforum (http://ww3.cad.de/foren/ubb/Forum376/HTML/000019.shtml#000002).

Gruß, DonChunior
Member: DonChunior
DonChunior Jan 28, 2015 at 09:25:11 (UTC)
Goto Top
Hallo LianenSchwinger,

wenn man die WHERE-Bedingung vor's "GROUP BY" verschiebt, stimmt deine Lösung ebenfalls.

Gruß, DonChunior
Member: Reinartz
Reinartz Jan 28, 2015 at 09:35:55 (UTC)
Goto Top
Aber das ist doch genau das was ich geschrieben habe nur das bei mir das sprache beim group by fehlte
und ich davon ausgegangen bin das du das ergebnis nicht nur für 1 dokumentnr haben willst
Member: LianenSchwinger
LianenSchwinger Jan 28, 2015 updated at 10:51:58 (UTC)
Goto Top
... war aus dem Bauch auf die Schnelle getippt. Passiert mir sonst nicht. face-wink

Habe es geändert.

Aber gut das Du die Lösung hast.

G Jörg