Problem mit SQL-Abfrage

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit SQL-Abfrage

    Hi Leutz,
    Ich habe drei Tabellen.

    Code:
    Kathegorie1
    --------------------
    Kath1_ID     AutoWert
    Kath1_Datum  Datum
    ... usw
    
    Person
    --------------------
    Pers_ID      AutoWert
    Pers_Name    Text
    
    Pers_b_Kath1
    --------------------
    Pers_b_Kath1_ID        AutoWert
    Pers_ID                Zahl
    Kath1_ID               Zahl
    Pers_b_Kath1_Wertung   Ja/Nein
    Pers_b_Kath1_Bemerkung Text

    Die Tabellen Kathegorie1 und Person sind über die Tabelle Pers_b_Kath1 verknüpft.
    Es gibt verschiedene Ereignisse und ich möchte alle Personen mit dem Datum deren jewiligen letzten Anwesenheit bei einem Ereignis in der Kathegorie 1 ausgeben.
    Personen die noch keine Verknüpfung zu Kath1 haben also noch bei keinem Ereignis der Kath 1 waren sollen auch mit aufgelistet werden, das Datumsfeld dann aber entsprechend leer bleiben.


    kleines Beispiel:
    Code:
    Tabelle Person  Tabelle Kathegorie 1        Tabelle Pers_b_Kath1
    
    P_ID  P_Name      Kath1_ID  Kath1_Datum     PbK1_ID  P_ID  K_ID PbK_Wertung
    --------------    ----------------------    --------------------------------  
    1     Peter       10        10.12.2005      20       1     10   True
    2     Fritz       11        11.12.2005      21       1     11   False
    3     Gustav      12        12.12.2005      22       2     11   True
                                                23       2     12   True
    Zum Schluss soll eine Tabelle herauskommen in der steht:
    Code:
    P_ID  P_Name  Kath1_Datum  Pbk_Wertung  Pbk_Bemerkung
    -------------------------------------------------------
     1    Peter   11.12.2005   False        ist zu spät gekommen
     2    Fritz   12.12.2005   True         war ok
     3    Gustav
    Diese Tabelle besagt uns,
    das Peter das letzte mal bei einem Ereignis der Kath1 am 11.12.2005 war, die Wertung = False ist
    das Fritz das letzte mal bei einem Ereignis der Kath1 am 10.12.2005 war, die Wertung = True ist
    das Gustav noch bei keinem Ereigniss der Kath1 dabei war.

    Mit der folgenden Abfrage lese ich die Daten aus den Tabellen aus:
    Code:
    SELECT Max(Kathegorie1.Kath1_Datum) AS Kath1_Datum, 
           Person.Pers_ID, 
           Person.Pers_Name, 
           Person.Pers_Vorname
           
    FROM Person LEFT JOIN   (Pers_b_Kath1 LEFT JOIN Kathegorie1 
                                        ON Kathegorie1.Kath1_ID = Pers_b_Kath1.Kath1_ID) 
                ON Person.Pers_ID = Pers_b_Kath1.Pers_ID
                
    GROUP BY Person.Pers_ID, 
             Person.Pers_Name, 
             Person.Pers_Vorname
             
    ORDER BY Max(Kathegorie1.Kath1_Datum);
    Diese Abfrage funktioniert auch wunderbar, doch wie kann ich noch die Daten die zusätzlich in der Verknüpfungstabelle also Pers_b_Kath1 drin stehen mit auslesen?
    Wenn ich Pers_b_Kath1.Wertung mit in die Select Funktion schreibe, bekomme ich die Meldung, dass Pers_b_Kath1.Wertung nicht als Teil der Agregatfunktion eingeschlossen ist. Und wenn ich Pers_b_Kath1.Wertung mit in die Group By Klausel setze bekomme ich ja eine andere Ausgabe in der von jeder Person das letzte Ereignis von Kath1 mit Wertung = true und von derselben Person das letzte ereignis mit Wertung = false

    Code:
    P_ID  P_Name  Kath1_Datum  Pbk_Wertung
    --------------------------------------------
     1    Peter   10.12.2005   True
     1    Peter   11.12.2005   False
     2    Fritz   12.12.2005   True
     3    Gustav
    Wie kann ich also die Daten der Verknüpfungstabelle ausgeben, ohne diese mit in die GOUP BY klausel aufnehmen zu müssen?
    Gruß Sunfy
Lädt...
X