Niestety nie da się tego zrobić puki nie skasuje błędnych wpisów które odnoszą się do nieistniejących kluczy.
Wiem, że jest wiele sposobów na szybkie zrobienie tego, ale zastanawiam się, czy jest jakiś "sprawdzony" ogólny sposób.
Tu przykład kodu który kasuje zerową ilość rekordów:
DELETE FROM zamowienie_produkt WHERE (SELECT id FROM zamowienie z WHERE zamowienie_produkt.id_zamowienie = z.id ) IS NULL
edit:
Czytam temat i nie wiem czy jest w pełni zrozumiały...
Chodzi o skasowanie wszystkich rekordów z tabeli zamowienie_produkt w których kolumna id_zamowienie odnosi się do nieistniejącego rekordu, innymi słowy nie istnieje zamówienie o takim id bo ktoś skasował a nie wziął pod uwagę że zostaną błędne wpisy w tabeli zamowienie_produkt.