我有一张表格,其中包含有关某些人在50年内工作和生活的各种历史数据。为简化起见,每条记录都有一个日期,一个person_id,一个address_id和一个布尔值为true或false,另一个布尔值为true或false。数据很零散,没有多少匹配。这个人本来可以住在他的工作地点,虽然这个问题可以忽略不计。
我希望在一个人的一年内有工作地址和居住地址时查找每个实例。当然,这个人可能在50年内改变了工作和住所。
可以在https://secure-shore-68966.herokuapp.com/connections查看信息摘要。
Rails程序位于https://bitbucket.org/MtnBiker/crores5/
有没有办法用SQL / Active Record做到这一点?我可以看到迭代每个记录并找到该人的每个记录加上或减去六个月的任何事件。但我希望有一种SQL方式。我想在每对之间的地图上画一条线。
表:
CREATE TABLE public.years
(
id integer NOT NULL DEFAULT nextval('years_id_seq'::regclass),
year_date date,
created_at timestamp without time zone NOT NULL,
updated_at timestamp without time zone NOT NULL,
resto boolean,
resid boolean,
source text,
person_id integer,
location_id integer,
title character varying,
notes text,
resto_name character varying,
ref_link character varying,
ref_url character varying,
snippet_file_name character varying,
snippet_content_type character varying,
snippet_file_size integer,
snippet_updated_at timestamp without time zone,
CONSTRAINT years_pkey PRIMARY KEY (id),
CONSTRAINT fk_rails_8fc1813509 FOREIGN KEY (person_id)
REFERENCES public.people (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_rails_e1624dbb3f FOREIGN KEY (location_id)
REFERENCES public.locations (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
因此,对于任何person_id
条目,resid
true
是resto
true
在正负六个月内(year_date
)。
答案 0 :(得分:0)
从项目的日期开始。如果我要进行迭代,我会查看该行的日期,并确定该人是否在六个月内有任何条目。附加条件是,如果该项目是残余的,那么+ - 六个月是正确的。