tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
9
ZUGRIFFE
565
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    qazeem qazeem ist offline Rookie
    Registriert seit
    Dec 2006
    Beiträge
    9
    Das folgende Problem sollte nicht so schwer sein, für Leute die fit sind. Ich bin es jedenfalls zur Zeit nicht mehr.

    2 Tabellen

    Fahrzeug Tabelle

    Fahrzeug KZ FZ_ID
    ------------------------------------
    B-123 1
    M-567 2

    Event Tabelle ( Wo die Fahrzeuge wann waren)

    FZ_ID Zeit Ort
    ---------------------------------------------------------
    1 12:00 Berlin
    1 13:00 Mannheim
    2 8:00 Berlin
    2 10:00 Berlin
    2 15:00 Hamburg

    Jetzt will ich ein Select Abfrage, die mir folgendes Ergebnis bringt:

    Fahrzeug_KZ Ort
    --------------------------------------------------
    B-123 Hamburg
    M-567 Mannheim

    Also das Ergebnis soll mir die Fahrzeuge auflisten mit dem der dazugehörigen Maximalen Zeit.

    Muss ich dafür ein Group BY Befehl verwenden? oder SELECT MAX...?
     

  2. #2
    Avatar von tplanitz
    tplanitz tplanitz ist offline Mitglied Gold
    Registriert seit
    Feb 2004
    Beiträge
    123
    Hallo,

    Tip: Ist immer gut zu wissen welches Datenbanksystem du nutzt (MySQL, Oracle etc. (auch die Versionsnummer ist nicht uninteressant)
    IIn Oracle (und wahrscheinlich auch in allen Anderen System) sollte das so gehen:

    PHP-Code:
    select Fahrzeug_KZ max(Zeit), Ort
    from Event 
    join  Fahrzeug using 
    (FZ_ID)
    group by Fahrzeug_KZOrt 
    Grüße
     
    =========================================
    Glaube denen, die die Wahrheit suchen, und zweifle
    an denen, die sie gefunden haben.
    =========================================
    André Gide (1869-1951), frz. Schriftst., 1947 Nobelpr.
    =========================================

  3. #3
    Avatar von matdacat
    matdacat matdacat ist offline Mitglied Platin
    Registriert seit
    Aug 2004
    Beiträge
    672
    Wobei das von Dir beschriebene Ergebnis nicht korrekt ist, oder? Hast Du nicht die Autos vertauscht?
     

  4. #4
    qazeem qazeem ist offline Rookie
    Registriert seit
    Dec 2006
    Beiträge
    9
    Msg 102, Level 15, State 1, Line 3
    Incorrect syntax near ','.
    Tja, ich benutze SQL, die neue Version und bearbeite das mi Microsoft SQL Management Studio Express.

    Ausserdem frag ich mich, da gibt es doch gar kein where klausel. Ich dachte an sowas:

    PHP-Code:
    select Fahrzeug_KZMAX(Zeit), Ort
    from Event
    Fahrzeug
    where Fahrzeug
    .FZ_ID Event.FZ_ID
    group by Fahrzeug_KZ
    Ort 
    Das zeigt keine Fehler an. Ich bekomme allerdings nicht nur 2 Einträge, sondern Mehrere Fahrzeuge mit mehrern Orten.....
     

  5. #5
    qazeem qazeem ist offline Rookie
    Registriert seit
    Dec 2006
    Beiträge
    9
    Hi matdacat,

    klar das Ergebnis hatte ich vertauscht. Ich will natürlich das Fahrzeug mit dem aktuellsten Ort. 2 Zeilen also.
     

  6. #6
    Avatar von matdacat
    matdacat matdacat ist offline Mitglied Platin
    Registriert seit
    Aug 2004
    Beiträge
    672
    Zitat Zitat von qazeem Beitrag anzeigen
    PHP-Code:
    select Fahrzeug_KZMAX(Zeit), Ort
    from Event
    Fahrzeug
    where Fahrzeug
    .FZ_ID Event.FZ_ID
    group by Fahrzeug_KZ
    Ort 
    Die Gruppierung nach dem Ort ist nicht korrekt. Ohne 'Ort' müssts schon klappen. Und bzgl. des Fahrzeugs möchtest Du doch nach FZ_ID gruppieren (auch wenn Fahrzeug_KZ ebenfalls eindeutig sein müsste), oder ?
    Geändert von matdacat (22.12.06 um 14:01 Uhr)
     

  7. #7
    qazeem qazeem ist offline Rookie
    Registriert seit
    Dec 2006
    Beiträge
    9
    PHP-Code:
    Msg 8120Level 16State 1Line 1
    Column 
    'Fahrzeug.Ort' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause
    Dann bekomm ich diesen Fehler....
     

  8. #8
    qazeem qazeem ist offline Rookie
    Registriert seit
    Dec 2006
    Beiträge
    9
    natürlich 'Event.Ort' und nicht Fahrzeug.Ort...

    Ich habe eine größere Tabelle. Die Idee mit dem Fahrzeug und Event ist allerdings identisch und vereinfacht.
     

  9. #9
    Avatar von matdacat
    matdacat matdacat ist offline Mitglied Platin
    Registriert seit
    Aug 2004
    Beiträge
    672
    Sorry fürs Verwirrung stiften. Eine Möglichkeit ist die folgende:

    Code :
    1
    2
    3
    
    SELECT F1.KZ,  E1.Zeit, E1.Ort
    FROM Event AS E1 INNER JOIN  Fahrzeug AS F1 ON E1.FZ_ID = F1.FZ_ID
    WHERE E1.Zeit = (SELECT MAX(Zeit) FROM Event WHERE Event.FZ_ID=F1.FZ_ID)
     

  10. #10
    qazeem qazeem ist offline Rookie
    Registriert seit
    Dec 2006
    Beiträge
    9
    @matdacat: Das hat ge****t!

    Die Tabelle steht...

    DANKE Leute
     

Ähnliche Themen

  1. Ausblenden von Spalten in einer SELECT-Abfrage trotz "SELECT *"
    Von Greq im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 19.11.07, 23:29
  2. SELECT *..... Abfrage
    Von flying-anzi im Forum Relationale Datenbanksysteme
    Antworten: 11
    Letzter Beitrag: 04.06.07, 19:11
  3. Abfrage mit Select
    Von Hannibal im Forum PHP
    Antworten: 0
    Letzter Beitrag: 12.04.05, 13:43
  4. MYSQL Abfrage mit Select in der Like-Abfrage
    Von TSchreiber im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 10.04.05, 19:09
  5. Abfrage - für mich kompliziert - help
    Von ultrakollega im Forum Relationale Datenbanksysteme
    Antworten: 9
    Letzter Beitrag: 27.10.03, 10:18