Donnerstag, 12. Juni 2008

Ein Beispiel für Mengenoperationen

SELECT AKF_KTO_JAHR,
       AKF_KTO_FLV_NR,
       AKF_KTO_VKZF,
       AKF_KTO_NR,
       AKF_FINANZIERUNGSART,
       AKF_FINANZIER,
       AKF_FINANZKENNZ
  from akfinanz
 where AKF_FINANZIER in (41, 44)
   and (AKF_KTO_JAHR,
        AKF_KTO_FLV_NR,
        AKF_KTO_VKZF,
        AKF_KTO_NR,
        AKF_FINANZIERUNGSART,
        AKF_FINANZIER,
        AKF_FINANZKENNZ) IN (select AKF_KTO_JAHR,
                                    AKF_KTO_FLV_NR,
                                    AKF_KTO_VKZF,
                                    AKF_KTO_NR,
                                    AKF_FINANZIERUNGSART,
                                    AKF_FINANZIER,
                                    AKF_FINANZKENNZ
                               from akfinanz
                             MINUS
                             select AKF_KTO_JAHR,
                                    AKF_KTO_FLV_NR,
                                    AKF_KTO_VKZF,
                                    AKF_KTO_NR,
                                    AKF_FINANZIERUNGSART,
                                    AKF_FINANZIER,
                                    AKF_FINANZKENNZ
                               from akfinanz
                              where ((AKF_FINANZIERUNGSART = 32                                 and AKF_FINANZIER = 40)
                                 or (AKF_FINANZIERUNGSART = 32 
                                      and AKF_FINANZIER = 50)
                               )
                             MINUS
                             select AKF_KTO_JAHR,
                                    AKF_KTO_FLV_NR,
                                    AKF_KTO_VKZF,
                                    AKF_KTO_NR,
                                    AKF_FINANZIERUNGSART,
                                    AKF_FINANZIER,
                                    AKF_FINANZKENNZ
                               from akfinanz
                              where AKF_KTO_JAHR not in 2008
                             MINUS
                             select AKF_KTO_JAHR,
                                    AKF_KTO_FLV_NR,
                                    AKF_KTO_VKZF,
                                    AKF_KTO_NR,
                                    AKF_FINANZIERUNGSART,
                                    AKF_FINANZIER,
                                    AKF_FINANZKENNZ
                               from akfinanz
                              where AKF_FINANZKENNZ = 1
                                                                        )

Bei der Teil-Ergebnismenge müssen zwei Bedingungen erfüllt sein, die in einer Oder-Beziehung verknüpft sind. Alle Elemente der Gesamtmenge, die dieser TeilErgebnismenge nicht entsprechen, bilden die Lösungsmenge.

Ich bilde zwei Mengen, bei der ich von der Gesamtmenge die Menge subtrahiere (MINUS-Operator), die der ersten Bedingung entspricht. Dann subtrahiere ich die Menge, die der zweiten Bedingung entspricht. Somit enthalte ich die gewünschte Menge.

Keine Kommentare: