I've the following two tables, pod_label
& service_selector
:
create table pod_label (
name varchar2(256),
key varchar2(256),
value varchar2(256)
);
insert into pod_label (name, key, value)
values ('p1', 'l1', '1');
insert into pod_label (name, key, value)
values ('p1', 'l2', '2');
insert into pod_label (name, key, value)
values ('p1', 'l3', '3');
insert into pod_label (name, key, value)
values ('p2', 'l1', '1');
insert into pod_label (name, key, value)
values ('p3', 'l1', 'N/A');
NAME | KEY | VALUE |
---|---|---|
p1 | l1 | 1 |
p1 | l2 | 2 |
p1 | l3 | 3 |
p2 | l1 | 1 |
p3 | l1 | N/A |
create table service_selector (
name varchar2(256),
key varchar2(256),
value varchar2(256)
);
insert into service_selector (name, key, value)
values ('s1', 'l1', '1');
insert into service_selector (name, key, value)
values ('s1', 'l2', '2');
NAME | KEY | VALUE |
---|---|---|
s1 | l1 | 1 |
s1 | l2 | 2 |
I'd like to find name
in pod_label
such that the corresponding (key, value)
pairs are a superset of those of s1
in service_selector
. In the above example, p1
is a match, while p2
& p3
are not.
A straight JOIN
isn't going to do it. Is there a way w/out resorting to a PL/SQL function?