【发布时间】:2018-03-04 07:08:43
【问题描述】:
我有两张桌子。一店“地点”:
TABLE location (
ID serial PRIMARY KEY,
name text NOT NULL,
description text NOT NULL
);
每个位置都有很多行“数据”:
TABLE data(
ID smallint REFERENCES location(ID),
date date,
rainfall int
);
我想查找所有具有跨越给定时间段的“数据”的位置。我试过这个:
SELECT location.ID, location.name FROM location
JOIN data ON data.id = location.id
WHERE (SELECT MIN(data.date) FROM data) <= '$start_date'
AND
(SELECT MAX(data.date) FROM data) >= '$end_date'
ORDER BY location.ID;
但它似乎将 MIN 和 MAX 测试应用于所有数据,而不是每个单独的位置,即测试需要应用于每个位置,并且只返回那些通过测试的位置。
有什么建议吗?
【问题讨论】:
标签: sql postgresql join where