4

次のような値を持つpostgresqlテーブルがあります。

Table region_data:

region_name | population | region_code
------------+------------+-------------
Region 1    | 120000     | A
Region 2    | 200000     | A
Region 3    | -1         | B
Region 4    | -2         | -1

一部のデータが利用できない場合 (つまり、-1 と -2 の値)

これらの値の翻訳を含むテーブル:

Table data_codes:

code  | meaning
------+-----------------------
-1    | 'Data not available'
-2    | 'Insufficient data'
...

Table region_types:

type  | meaning
------+---------------
A     | Mountain
B     | Grassland
...

data_code および region_types テーブルによって提供される人間が読める翻訳を返すクエリ (実際にはビュー) を作成したいと考えています。たとえば、ビューは次を返します。

Region Name | Population         | Region Type
------------+--------------------+-------------
Region 1    | 120000             | Mountain
Region 2    | 200000             | Mountain
Region 3    | Data Not Available | Grassland
Region 4    | Insufficient Data  | Data Not Available

私はいくつかのサブクエリを実行しようとしましたが、コードが data_code テーブル内のどこにも一致しない多くの重複行を返します。

助けてください?ありがとう!

4

3 に答える 3

1
select
    r.region_name,
    coalesce(d1.meaning, r.population::text) as population,
    coalesce(d2.meaning, rt.meaning, r.region_code) as region_code
from region_data as r
    left outer join data_codes as d1 on d1.code = r.population
    left outer join data_codes as d2 on d2.code::text = r.region_code
    left outer join region_types as rt on rt.type = r.region_code
order by r.region_name

=> sql フィドルのデモ

于 2013-09-06T21:01:09.297 に答える
0

たぶん、クエリを投稿できます。結合を使用する場合の重複した行は、通常、LEFT JOIN ではなく INNER JOIN を意味します

于 2013-09-06T20:46:40.930 に答える