Hallo,

zuerst einmal, wenn man mit Sub-Selects arbeitet, sollten man Sub-Selects in der Select-Anweisung wenn möglich vermeiden und lieber in der From-Anweisung einsetzen.

In Deinem Fall wird die gleiche Abfrage 3x ausgeführt, um den Minimal-Wert, den Maximal-Wert und die Anzahl zu bestimmen. Besser wäre natürlich die Tabelle nur einmalig zu lesen und dabei den Minimal- und Maximal-Wert, sowie die Anzahl ermitteln.

Weiterhin, muss Du in solchen Fällen die Gesamt-Abfrage zumindest geistig in Einzel-Abfragen zerlegen und anschließend wieder zu einem Großen Ganzen zusammen fassen.

Soweit ich das überblickt habe werden die folgenden Abfrage benötigt:
  • Tabelle MYC4REP, aus der nur die Sätze mit C4RCTX = '100' und C4D0NB = 676 selectiert werden.
  • Die Tabelle MYC5REP muss für alle Sätze mit C4RCTX = '100' und C5D0NB = 676 (beides Schlüssel-Felder) auf C5rctx, c5d0nb, c5lfdn verdichtet werden. Auf dieser Ebene wird dann der Minimal-Wert und Maximal-Wert, sowie die Anzahl ermittelt.
  • Das Ergebnis aus Abfrage 1 muss mit Tabelle MYC5REP über C5RCTX, C5D0NB, C5LFDN verknüpft werden, da nur MYC5REP über alle Schlüssel-Felder mit Tabelle 3 verknüpft werden kann. Die Verknüpfung der 3 Abfragen muss dann wieder auf RCTX, D0NB und LFDN verdichtet werden und nur die Sätze mit J in INF01 gezählt werden.
  • Die einzelnen Teilergebnisse werden dann miteinander über RCTX, D0NB und LFDN verknüpft und die gewünschten Spalten ausgewählt und wie gewünscht sortiert.


Die Abfrage könnte im Endeffekt etwa so aussehen:
PHP-Code:
With a as (Select 
              
from MyC4Rep
              Where C4RCTX 
'100' AND C4D0NB 676)
     
as (Select C5rctxc5d0nbc5lfdn
                  
Min(C5W4NB) as Min_cw5nb
                  
Max(C5w4nb) as Max_CW5NB
                  
Count(*) as Anz_In_Tabelle2
             from MYC5Rep
             Where C5RCTX 
'100' and C5D0NB 676
             
Group by c5rctxc5d0nbc5fldn),
     
as (Select I5RCTXI5D0NBC5LFDN as I5LFDN
                  
count(I5NF01Anz3
              from a join MyC5REP on    C4RCTX 
C5RCTX
                                    
and C4D0NB C5D0NB
                                    
and C4LFDN C5LFDN
                     join Tab3    on    C5RCTX 
I5RCTX 
                                    
and C5D0NB I5RCTX 
                                    
and C5CRNB I5CRNB 
                                    
and C5W3NB I5W3NB 
                                    
and C5W4NB I5W4NB 
                                    
and C5XXTX I5XXTX
              Where I5NF01 
'J'
SELECT a.*, Min_Cw5nbMax_Cw5NBAnz_in_Tabelle2Anz3
FROM   a join b on c4rctx 
c5rctx and c4d0nb c5d0nb and c4lfdn c5lfdn
         join c on C4rctx 
i5rctx and c4d0nb i5d0nb and c4lfdn i5lfdn 
Birgitta