
Problem jest tego typu, iż tylko jeden z trzech kluczy w głowej tabeli zawsze przybiera jakąś wartość, natomiast pozostałe dwa klucze obce mogą przyjmować (choć nie muszą) NULL.
SELECT * FROM klienci_umowy LEFT JOIN (opcje_t1, opcje_t2, rodzaje_umowy ) ON ( klienci_umowy.id_opcji_t1 = opcje_t1.id_opcji_t1 AND klienci_umowy.id_opcji_t2 = opcje_t2.id_opcji_t2 AND klienci_umowy.id_rodzaju_um_t1 = rodzaje_umowy.id_rodzaju_umowy)
klucze w tabeli klienci_umowy tj. id_opcji_t2, id_opcji_t3 (tutaj akurat nie ma) moga miec jakas wartosc, ale rownie dobrze moga byc puste. Natomiast id_opcji_t1 zawsze przyjmuje jakas wartosc. W wyniku powiazan, w przypadku, gdy wartosc klienci_umowy.id_opcji_t2 ma wartosc nULL, wszystkie pola z tabeli opcje_t1 i opcje_t2 przyjmuja wartosc NULL, co oczywiscie jest bledem.. powinno zwrocic wartosci w polach tabeli opcje_t1, a NULL opcje_t2 (jesli klienci_umowy.id_opcji_t2 mialo bylo puste) Jak to poprawic?