Noch'n Vorschlag:
falls dich die 'Mahlzeit' stört, könntest Du ja mit not exists arbeiten, das macht die
Query zwar etwas langsamer, aber wenn dein Server ordentlich auf Zack ist, macht das fast nix. Also: Finde alle Artikel, zu denen keine Bestellung des aktuellen Kunden existiert:
select * from artikel a where a.Datum = :Datum and not exists(select * from bestellte_artikel b where b.ArtikelNr = a.ArtikelNr and b.KundenNr = :Kunde)
Servus