我有一张名为 Lives 的表:
create table Lives(
animal varchar(10) not null,
year int not null,
zoo varchar(10),
primary key(animal,year)
);
使用给定的数据:
ANIMAL YEAR ZOO
---------- ----------- ----------
joe 2000 a
joe 2001 a
joe 2002 d
joe 2004 c
fred 2002 b
fred 2004 c
jane 2000 a
jane 2001 b
jane 2002 b
jack 2000 a
jack 2001 a
jack 2002 d
jack 2004 c
judy 2004 b
ruby 2003 d
alfred 2006 a
它由动物的名称、年份和当年所在的动物园组成。
我需要一个查询来找到多年来一直在同一个动物园里的动物对(a,b),并且 a 在字典上小于 b(即 a < b)。更准确地说,这样的对 (a, b) 满足以下条件:如果动物 a 在 y 年住在动物园 z,那么 b 在 y 年也住在动物园 z,反之亦然。
所以我的示例数据的输出将是:
Animal Animal
------- -------
jack joe
到目前为止,我已经构建了这个查询:
SELECT l1.animal, l2.animal
FROM Lives as l1, Lives as l2
WHERE l2.year = l1.year and l1.animal > l2.animal
它给了我在动物园里呆了 1 年的动物。我现在不知道如何继续。
我将在我的 sqlj 程序中使用这个查询。是否可以构造一个满足我想要的结果的查询,或者我应该从我当前的查询继续并在 sqlj 中实现其余的?