Hi Leutz,
Ich habe drei Tabellen.
SQL-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
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:
SQL-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:
SQL-Code:
P_ID P_Name Kath1_Datum Pbk_Wertung
--------------------------------------------
1 Peter 11.12.2005 False
2 Fritz 12.12.2005 True
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:
SQL-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
SQL-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