Einzelnen Beitrag anzeigen

sunfy

Registriert seit: 27. Apr 2004
22 Beiträge
 
#1

SQL-Abfrage (Daten aus Verknüpfungstabelle mit ausgeben?)

  Alt 14. Dez 2005, 16:14
Datenbank: Access • Version: 2000 • Zugriff über: ADO Connection
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
  Mit Zitat antworten Zitat