我有以下表格:
CREATE TABLE Company (
CompanyUniqueID BIGSERIAL PRIMARY KEY NOT NULL,
Name VARCHAR (150) NOT NULL
);
CREATE TABLE Item (
ItemUniqueID BIGSERIAL PRIMARY KEY NOT NULL,
CompanyUniqueID BIGINT NULL REFERENCES company DEFERRABLE INITIALLY DEFERRED,
Name VARCHAR (150) NOT NULL,
AddedDate TIMESTAMP without time zone DEFAULT now()
);
在应用程序的生命周期新的公司和项目添加到表。 我想创建一个SQL查询,从我开始与此查询给定日期选择“新增加的企业”:
(Select * from company
where companyuniqueid in (
select distinct companyuniqueid from Item where AddedDate > '2014-10-25'))
以上是不好的,因为2014年10月25日之后,并将属于已经存在的企业的项目也将被选中。
例如,快照Company
表从二零一四年十月二十〇日可以是这样的:
1 AAA
2 BBB
3 CCC
并表项目的样子:
1 1 111 2014-10-01
2 2 222 2014-10-10
3 2 333 2014-10-10
4 3 444 2014-10-15
在2014年10月26日添加以下记录:
公司表
4 DDD
表项目
5 1 555 2014-10-26
6 3 663 2014-10-26
7 4 777 2014-10-27
我试着加入这个到查询:
(Select * from company
where companyuniqueid in (
select distinct companyuniqueid from Item
where AddedDate > '2014-10-25')
and companyuniqueid not in (
select distinct companyuniqueid from Item
where AddedDate <= '2014-10-25'))
但我发现了一个空的结果,应该是什么查询,以获得只有4 DDD?