Dlaczego tak
LEFT JOIN zachowuje każde zamówienie, a gdy nie ma pasującego klienta, kolumny klienta przyjmują NULL — warunek k.id IS NULL wybiera więc zamówienia osierocone. Złączenie wewnętrzne odrzuca takie wiersze, zanim zadziała WHERE, i zwraca pusty wynik. Ostatnie zapytanie szuka odwrotnie: klientów bez zamówień, co nie jest naruszeniem spójności.