Announcement

Collapse
No announcement yet.

SELECT alles ausser MIN(...)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SELECT alles ausser MIN(...)

    Hallo

    Ich bin an meine Grenzen gestossen. Ich versuche schon seit geraumer Zeit, eine Datenbankabfrage hinzubekommen, aber irgendwie steige ich nicht dahinter wie.

    Meine Tabelle (agenda) ist ganz simple aufgebaut:
    id_agenda (int)
    datum (date)

    Im ersten Teil möchte ich, dass nur das kleinste Datum ausgelesen wird, was auch superfunktioniert.

    "SELECT
    CONCAT(
    DATE_FORMAT(MIN(datum),'%d'), '. ',

    CASE DATE_FORMAT(MIN(datum),'%c')
    WHEN 1 THEN 'Januar'
    WHEN 2 THEN 'Februar'
    WHEN 3 THEN 'März'
    WHEN 4 THEN 'April'
    WHEN 5 THEN 'Mai'
    WHEN 6 THEN 'Juni'
    WHEN 7 THEN 'Juli'
    WHEN 8 THEN 'August'
    WHEN 9 THEN 'September'
    WHEN 10 THEN 'Oktober'
    WHEN 11 THEN 'November'
    ELSE 'Dezember' END,
    ' ',
    DATE_FORMAT(MIN(datum),'%Y')

    ) as datum_event
    FROM agenda
    ORDER BY datum";

    Ich schaffe es allerdings nicht, dass ich alle Daten ausser dem MIN(datum) auslesen. Mein Ansatz wäre folgender:
    "SELECT
    CONCAT(
    DATE_FORMAT(datum,'%d'), '. ',

    CASE DATE_FORMAT(datum,'%c')
    WHEN 1 THEN 'Januar'
    WHEN 2 THEN 'Februar'
    WHEN 3 THEN 'März'
    WHEN 4 THEN 'April'
    WHEN 5 THEN 'Mai'
    WHEN 6 THEN 'Juni'
    WHEN 7 THEN 'Juli'
    WHEN 8 THEN 'August'
    WHEN 9 THEN 'September'
    WHEN 10 THEN 'Oktober'
    WHEN 11 THEN 'November'
    ELSE 'Dezember' END
    ) as datum_event
    FROM agenda
    WHERE id_agenda != MIN(id_agenda) //das ist die meines Erachtens die Schwachstelle - hab's auch schon mit '>' versucht
    ORDER BY datum";

    Vielen Dank für eure Hilfe.

    Gruss

    wonnepfropfen

  • #2
    Hallo wonnepfrofen,

    da musst Du im WHERE das Datum über ein Subselect aufs Min-Datum einschränken.
    Das Formatieren eines Datums geht überigens auch einfacher:
    [highlight=sql]CREATE TABLE #agenda
    (id int, datum datetime);
    INSERT INTO #agenda VALUES (1, '20090101');
    INSERT INTO #agenda VALUES (1, '20090201');
    INSERT INTO #agenda VALUES (1, '20090301');
    INSERT INTO #agenda VALUES (1, '20090401');
    INSERT INTO #agenda VALUES (1, '20090501');


    SELECT DATENAME(dd, datum) + '.' + DATENAME(mm, datum) + ' ' + DATENAME(yy, datum)
    FROM #agenda AS MAIN
    WHERE datum > (SELECT MIN(Datum)
    FROM #agenda AS SUB
    WHERE SUB.id = MAIN.id)

    GO
    DROP TABLE #agenda[/highlight]
    [highlight=code]1.Februar 2009
    1.März 2009
    1.April 2009
    1.Mai 2009[/highlight]
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      Hallo Olaf

      Tausend Dank für deine schnelle Antwort. Jetzt funktioniert's.
      Da wäre ich im Leben nicht drauf gekommen.

      Liebe Grüsse

      Comment

      Working...
      X