Announcement

Collapse
No announcement yet.

mySQL : sortierung nach Datum aus 2ter Tabellen

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

  • mySQL : sortierung nach Datum aus 2ter Tabellen

    Ich habe jetzt schon einiges versucht, bisher klappt es aber noch nicht. Ich bin mir inzwischen auch gar nicht mehr sicher, ob ich auf der richtigen Spur bin.
    Gegeben sind 2 Tabellen

    Tabelle 1 Container:
    ID int(8) auto_increment,
    auftragNr int(11),
    status enum('aktiv', 'archiv'),
    start_ort varchar(120),
    ziel_ort .....

    Tabelle 2 Laufinformation:
    LID int(11) auto_increment,
    ID int(8),
    datum date,
    ort varchar(120)

    zu jedem Container leigen n Laufinformationen vor.
    Die Ausgabe soll sortiert werden nach dem Datum der Laufinformation, für jeweils einen bestimmten status. Es sollen dabei immer nur die aktuellste Laufinformation angezeigt werden.
    Versucht habe ich :

    SELECT cont.*, lauf.datum,lauf.ort FROM Container cont
    LEFT JOIN Laufinformation lauf
    ON cont.status = "aktiv" AND cont.ID=lauf.ID
    GROUP BY cont.ID
    ORDER BY lauf.datum

    Das Ergebniss entspricht nicht den Erwartungen. Ich bin mir jetzt nicht sicher, ob ich überhaupt auf der richtigen Spur bin. Zudem erscheint mir (subjektiv) die abfrage als sehr langsam ...
    Kann mir jemand behilflich sein??
    Danke und gruss

  • #2
    Hallo,

    wozu das ...group by... du verwendest doch keine Aggregatfunktion. Laß das group by weg und sortiere nach cont.status, lauf.datum.

    Gruß Fal
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Hallo,

      ja, hmm, dachte ich zuerst ja auch. Aber mit der Abfrage<pre>
      SELECT cont.*, lauf.datum,lauf.ort FROM Container cont
      LEFT JOIN Laufinformation lauf
      ON cont.ID=lauf.ID
      WHERE cont.status = "aktiv"
      ORDER BY lauf.datum</pre>
      bekomme ich jeden Container n-mal angezeigt, entsprechend der Anzahl der Laufinformationen.
      Wenn also zu Container A 5 Laufinformationen zugeordnet sind, taucht A 5mal in der Liste auf ..

      Comment


      • #4
        Sollte miit einem Subselect auf MAX(datum) aus der Laufinformation gehen.

        Grüße Joche

        Comment


        • #5
          ... oder gruppierst dann doch:
          SELECT cont.*, MAX(lauf.datum) as LAST_Datum, lauf.ort FROM Container cont
          LEFT JOIN Laufinformation lauf
          ON cont.ID=lauf.ID
          WHERE cont.status = "aktiv"
          GROUP BY cont.*, lauf.ort

          Gruß Fal
          Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

          Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

          Comment

          Working...
          X