Forum Doku Wiki Blog

Forumsarchiv 2009, Januar
verzwicktes SQL-Statement

archivierte Beiträge lesen

  1. (DATENBANK) verzwicktes SQL-Statement von mika, 19. 01. 2009, 15:41

verzwicktes SQL-Statement

Der folgende Beitrag wurde am 19. 01. 2009, 15:41 Uhr von mika veröffentlicht.

Hallo Zusammen,

ich habe mir mit Mühe und ein komplexes SQL-Statement aufgebaut, das aus einem Subselect und mehrere Left-Joins besteht.

also Ergebnis erhalte ich eine Tabelle in ähnlicher Form wie diese:

id  spalte1  spalte2 cdate
1   Text     Text    2009-01-19 17:00:00
1   Text     Text    2009-01-19 16:50:00
2   Text     Text    2009-01-18 15:00:00


Nun möchte ich noch folgende Bedingung in das SQL-Statement einbringe:
wenn mehrere datensätze die selbe id haben, soll nur der datensatz mit dem ältesten cdate in der ergebnismenge enthalten sein.

Aus obiger Beispieltabelle soll dann folgendes resultieren:
id  spalte1  spalte2 cdate
1   Text     Text    2009-01-19 16:50:00
2   Text     Text    2009-01-18 15:00:00

Ich suche schon stundenlang nach einer Lösung aber ich komme einfach nicht darauf wie ich dies machen könnte. Eine Alternative wäre, die Ergebnismenge nachträglich mittels PHP zu filtern.

Aber es gibt doch sicher eine Möglichkeit dies gleich im SQL-Statement zu erledigen, oder?
 

verzwicktes SQL-Statement

Der folgende Beitrag wurde am 19. 01. 2009, 15:57 Uhr von the-FoX veröffentlicht.

Moin Mika,

spontan würde mir einfallen ein ORDER BY CDATE ASC GROUP BY id
einzuführen.


Gruß,
the-Fox

verzwicktes SQL-Statement

Der folgende Beitrag wurde am 19. 01. 2009, 16:12 Uhr von mika veröffentlicht.

Hi Fox,

> spontan würde mir einfallen ein ORDER BY CDATE ASC GROUP BY id
> einzuführen.

Danke es funktioniert auf den ersten Blick wunderbar. Werde es noch mit weiteren Testdaten testen.

Wenn man die Lösung vor Augen hat, sieht es so logisch und einfach aus :-)

verzwicktes SQL-Statement

Der folgende Beitrag wurde am 19. 01. 2009, 16:29 Uhr von Ilja veröffentlicht.

yo,

> Danke es funktioniert auf den ersten Blick wunderbar. Werde es noch mit weiteren Testdaten testen.
>
> Wenn man die Lösung vor Augen hat, sieht es so logisch und einfach aus :-)

ich bin mir recht sicher, das es nicht funktioniert. und was du vor augen hast ist wohl eher der heimtükische mysql bug, "ich lieb dich nicht, du liebst mich nicht". aber das kann man dir genau sagen, wenn du uns mal die abfrage zeigst.

Ilja

verzwicktes SQL-Statement

Der folgende Beitrag wurde am 19. 01. 2009, 17:12 Uhr von Vinzenz Mai veröffentlicht.

Hallo,

> also Ergebnis erhalte ich eine Tabelle in ähnlicher Form wie diese:

> id  spalte1  spalte2 cdate
> 1   Text     Text    2009-01-19 17:00:00
> 1   Text     Text    2009-01-19 16:50:00
> 2   Text     Text    2009-01-18 15:00:00

> Nun möchte ich noch folgende Bedingung in das SQL-Statement einbringe:
> wenn mehrere datensätze die selbe id haben, soll nur der datensatz mit dem ältesten cdate in der ergebnismenge enthalten sein.

> Aus obiger Beispieltabelle soll dann folgendes resultieren:
> id  spalte1  spalte2 cdate
> 1   Text     Text    2009-01-19 16:50:00
> 2   Text     Text    2009-01-18 15:00:00

> Aber es gibt doch sicher eine Möglichkeit dies gleich im SQL-Statement zu erledigen, oder?

ja. Wie Ilja bereits durchscheinen ließ (zumindest für Insider), suchst Du die korrelierte Unterabfrage, siehe zum Beispiel diesen Archivbeitrag von mir.


Freundliche Grüße

Vinzenz,

der sich wirklich einmal die Zeit nehmen sollte, einen Artikel zu diesem Thema zu schreiben.

verzwicktes SQL-Statement

Der folgende Beitrag wurde am 19. 01. 2009, 18:41 Uhr von Rouven veröffentlicht.

Hello,

> der sich wirklich einmal die Zeit nehmen sollte, einen Artikel zu diesem Thema zu schreiben.
ja, weil ich dann auch endlich anfangen könnte den Leuten was zu verlinken :-)
Und vergess nicht den Abschnitt über MySQLs-Sonderlocke bei GROUP BY :-P

MfG
Rouven

--
-------------------
sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)

Let Bygones Be Bygones  --  Robert Pitscottie: "Chronicles of Scotland"

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4