Ein Left join schließt ja nun mal nichts aus sondern ergänzt die Daten nur um Zusatzfelder oder NULL falls nix da ist.
Also ist die 1. Version eigentlich so korrket:

select * from temp#b/meld a where trstatus = 'P' and trstat00 <> 'I'
and trstat00 <> 'K'
and not exists (select * from dtpp b where ....)

Für den not exists sind mir die Feldbeziehungen zwischen meld und dtpp nicht klar, also entsprechend anpassen.
Jetzt musst du natürlich bedenken, dass alle Sätze mit P durchsucht werden müssen, da für <> kein Index genommen werden kann.
Und je nach Ergebnis sind da eben viele Zugriffe erforderlich.