Mam pewien problem muszę wypisać z bazy klientów, którzy spełniają określone wymagania m.in.:
Ich nazwa nie zawiera (D) lub (INT), - (`adr_Nazwa` NOT LIKE '%(D)%' OR `adr_Nazwa` NOT LIKE '%(INT)%' )
Klient nie może posiadać ceny z id 21. (`ck_IdCecha` = '21')
W pierwszej fazie kiedy wyeliminowałam jedynie klientów z (D) lub (INT) w nazwie wszystko działało poprawnie. Problem pojawił się kiedy chciałam dodatkowo usunąć klientów posiadających cechę 21. W związku z tym, że klienci posiadają kilka cech za pomocą "NOT IN" uzupełniłam id (`kh_Id`) klientów posiadających te cechę z puli tak by nie byli brani pod uwagę.
I tu pojawił się problem bo polecenie (`adr_Nazwa` NOT LIKE '%(D)%' OR `adr_Nazwa` NOT LIKE '%(INT)%' ) przestało być obsługiwane. Czyli pojawiły się w wynikach nazwy z (D) lub (INT). Jeżeli będę jedynie nie wyświetlać np. z (D) to wszystko będzie dobrze błąd jest tylko w przypadku gdy posiadam jednocześnie (D) lub (INT).
SELECT DISTINCT `kh_Symbol`, `adr_Nazwa` FROM `adr__Ewid` INNER JOIN `kh__Kontrahent` ON `adr_IdObiektu` = `kh_Id` INNER JOIN `kh_CechaKh`ON `ck_IdKhnt` = `kh_Id` WHERE `kh_InstKredytowa` = true AND `kh_Zablokowany` != true AND `adr_TypAdresu`='1' AND (`adr_Nazwa` NOT LIKE '%(D)%' OR `adr_Nazwa` NOT LIKE '%(INT)%' ) AND `kh_Id` NOT IN (SELECT kh_Id FROM `kh__Kontrahent` INNER JOIN `kh_CechaKh`ON `ck_IdKhnt` = `kh_Id` WHERE `ck_IdCecha` = '21') GROUP BY `kh_Id`
Wie ktoś jak naprawić to polecenie.