Vinzenz Mai: MySQL: Subquery statt Join

Beitrag lesen

Hallo Andreas,

Ich habe eine Tabelle mit Aufträgen und eine Tabelle mit dazugehörigen Dokumenten wie z.B. Angebote, Auftragsbestätigungen, Lieferscheine etc. die mit einer Status-Nummer gekennzeichnet sind (Lieferschein hat den Status 6):

Tabelle orders:
order_id | order_date

Tabelle documents:
document_id | order_id | document_status | document_date

Jetzt möchte ich gerne alle Aufträge haben, bei denen noch kein Lieferschein erzeugt wurde.
Hat jemand eine Idee?

ich hatte es ganz vergessen. Joins sind in diesem Falle eher zweite Wahl.
Du möchtest eher eine Subquery verwenden:

SELECT            -- Gib mir  
   o.order_id,             -- die Aufträge  
   o.order_date  
FROM  
    orders o  
WHERE                      -- für die  
    NOT EXISTS (           -- kein  
        SELECT  
            d.order_id  
        FROM  
            documents d  
        WHERE  
            d.order_id = o.order_id   -- zugeordneter  
        AND  
            d.document_status = 6     -- Lieferschein  
    )                                 -- existiert  

Freundliche Grüße

Vinzenz