2016-06-30 11 views
0

私は、次の表では、選択行が

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_idpostcode_rangesが列postcode_digitsを持ってpropertiesテーブルへの外部キーであると呼ばれています。

ここで、特定の都市に属するすべてのプロパティを選択できます。これは、id = 1で都市を選択すると、propertiesテーブルのすべての行がpostcode_digits列がbeteen 1000と1999、または2000と2000(照会で自動化すると簡単に見える)、または2030〜2050の間で選択する必要があることを意味します。

可能であれば、私はこれをすべて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 
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; 
+0

私は右、p.postcode'に 'あなたが意味を推測? –