【发布时间】:2017-02-12 03:46:35
【问题描述】:
我有一张表格,其中包含有关某些人在 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)。
【问题讨论】:
-
一年的跨度是现在形成(CurrentDate),还是从特定日期开始?
标签: sql ruby-on-rails postgresql activerecord