У меня есть две таблицы, которые выглядят так:
A B
id_attr value id id_attr value
-------------- -------------------
1 a 1 2 b
2 b 1 3 c
3 c 2 2 b
4 NULL 2 4 d
2 5 e
3 1 aaa
3 3 c
Таблица A - это моя справочная таблица, и у меня есть несколько записей в таблице B. (каждая группа записей с одинаковым идентификатором состоит из пар (id_attr, значение), аналогичных структуре таблицы A). Цель состоит в том, чтобы проверить, соответствует ли запись в таблице A какой-либо записи в таблице B (одной или более). Одна запись соответствует другой, когда каждый атрибут, существующий в таблице B под одним идентификатором, совпадает с похожими атрибутами в таблице A. Кроме того, в таблице A значения могут быть NULL, но в таблице B нет.
В приведенном выше примере мой запрос должен возвращать «1», поскольку только записи с идентификатором 1 полностью соответствуют аналогичным записям в таблице A. Идентификатор 2 не совпадает, поскольку в таблице значение атрибута 4 равно NULL и оно имеет атрибут которого нет в таблице A. Идентификатор 3 также не совпадает, даже если атрибут 3 похож, но атрибут 1 не совпадает.
Как видно, для достижения соответствия не все записи, существующие в таблице A, должны совпадать, но если атрибут существует в таблице B, то его значение должно совпадать со значением, аналогичным значению в таблице A.
Каков наиболее эффективный способ достижения этого результата в запросе Oracle?
Любая помощь будет принята с благодарностью. Я могу дать ответы на дальнейшие вопросы, если я недостаточно четко выразил свое мнение.