値をすべての可能な値、一種の「すべてをキャッチ」値、アンチ NULL に一致させるためのトリックは postgresql にありますか?
現時点では、「キャッチオール」キーワードを選択して、クエリで強制的に一致させることをお勧めします。
WITH cities AS (SELECT * FROM (VALUES('USA','New York'),
('USA','San Francisco'),
('Canada','Toronto'),
('Canada','Quebec')
)x(country,city)),
zones AS (SELECT * FROM (VALUES('USA East','USA','New York'),
('USA West','USA','San Francisco'),
('Canada','Canada','catchall')
)x(zone,country,city))
SELECT z.zone, c.country, c.city
FROM cities c,zones z
WHERE c.country=z.country
AND z.city IN (c.city,'catchall');
zone | country | city
----------+---------+---------------
USA East | USA | New York
USA West | USA | San Francisco
Canada | Canada | Toronto
Canada | Canada | Quebec
新しいカナダの町が「都市」テーブルに挿入された場合、「ゾーン」テーブルはそれを「カナダ」ゾーンの一部として自動的に認識します。上記のクエリは、私が探している機能を満たしていますが、広いデータベースで複数回繰り返されると、扱いにくく、エラーが発生しやすくなります。
これは適切な方法ですか、より良い方法はありますか、それとも間違った質問をしていますか?
ご回答ありがとうございます。