Я хочу сравнить две записи на основе строк в связанной таблице. Допустим, у меня есть две таблицы: FOOS и BARS.
FOOS
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
+----+
BARS
+--------+-------+
| foo_id | value |
+--------+-------+
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 2 |
| 3 | 3 |
+--------+-------+
Таким образом, у каждого Foo есть коллекция баров.
- Foo 1 имеет значения баров 1, 2, 3
- Foo 2 имеет значения бара 1, 2
- Foo 3 имеет значения бара 3
Я хочу узнать по идентификатору FOO, какие другие идентификаторы FOOS имеют такие же идентификаторы.
- Foo 1 не имеет соответствующих foos.
- Foo 2 соответствует Foo 1, потому что Foo 1 имеет значения бара 1 и 2.
- Foo 3 соответствует Foo 1, потому что Foo 1 имеет значения бара 3.
Я хотел бы представить результат в виде таблицы:
+---------+----------+
| src_foo | targ_foo |
+---------+----------+
| 2 | 1 |
| 3 | 1 |
+---------+----------+
Вот скрипт установки БД, предоставляющий вышеуказанные данные:
create table foos (id number(32) not null) ;
create table bars (foo_id number(32) not null, val number(32) not null);
insert into foos (id) values (1);
insert into foos (id) values (2);
insert into foos (id) values (3);
insert into bars (val, foo_id) values (1, 1);
insert into bars (val, foo_id) values (2, 1);
insert into bars (val, foo_id) values (3, 1);
insert into bars (val, foo_id) values (1, 2);
insert into bars (val, foo_id) values (2, 2);
insert into bars (val, foo_id) values (3, 3);