Это было бы проще, если бы вы нормализовали свои таблицы в Первая нормальная форма . Прямо сейчас столбцы вашей другой категории образуют повторяющуюся группу .
Чтобы выполнить эту нормализацию, вам нужна другая таблица для представления отношения «многие ко многим» между CAS
и CA
.
CREATE TABLE HasCategory (
CATEGORY_ID INTEGER,
CAS_ID INTEGER,
CATEGORY_LEVEL CHAR(1), -- 'L' or 'M' or 'S'
PRIMARY KEY (CATEGORY_ID, CAS_ID, CATEGORY_LEVEL),
FOREIGN KEY (CATEGORY_ID) REFERENCES CATEGORIES,
FOREIGN KEY (CAS_ID) REFERENCES CATEGORY_AD_SYS
);
Тогда вы можете написать свои условия соединения гораздо более простым способом:
SELECT ...
FROM CATEGORIES CA
JOIN HasCategory H ON (H.CATEGORY_ID = CA.CATEGORY_ID)
JOIN CATEGORY_AD_SYS CAS ON (H.CAS_ID = CAS.CAS_ID)
WHERE H.CATEGORY_LEVEL = @CATEGORY_LEVEL