我有下表postcode_ranges
id | city_id | from | to
---------------------------
1 | 1 | 1000 | 1999
2 | 1 | 2000 | 2000
3 | 1 | 2030 | 2050
4 | 2 | 1000 | 1000
5 | 5 | 4300 | 4400
6 | 6 | 9000 | 9900
city_id
是properties
表的外键,其中包含postcode_digits
列。
现在,我希望能够选择属于某个城市的所有属性。这意味着当有人选择id = 1
的城市时,properties
表中的所有行都应该选择postcode_digits
列为1000和1999,或2000和2000(当在查询中自动化,或在2030年到2050年之间。
如果可能的话,我想在一个简洁的查询中完成这一切,但我并不完全知道如何实现这一目标。
答案 0 :(得分:0)
您是否只想要join
where
?
select p.*
from properties p join
postcode_ranges pr
on p.postcode between p."from" and p."to"
where pr.city_id = 1;
答案 1 :(得分:0)
SELECT *
FROM properties
INNER JOIN postcode_ranges
ON postcode_ranges.city_id = properties.city_id
AND properties.postcode >= postcode_ranges.from
AND properties.postcode <= postcode_ranges.to
WHERE postcode_ranges.city_id = 1