単一のクエリでPostgres DB内の複数のテーブルを検索しますか? 質問する

単一のクエリでPostgres DB内の複数のテーブルを検索しますか? 質問する

単一のデータベース内の複数のテーブルを検索しようとしていますが、うまくいきません。

都市と国の2つのテーブルがあり、両方またはどちらかから結果を検索する単一の検索が必要です。

このようなもの -

SELECT * FROM cities && countries WHERE name ='New York'

どんな助けでも大歓迎です!

ベストアンサー1

JOINこれは、 句または句のいずれかを使用して実行できますUNION。結果をどのようにしたいかによって異なります。(次の例では、スキーマについていくつかの仮定を行っています)。

JOINで

SELECT *
FROM cities
JOIN countries ON (cities.country_id = countries.country_id)
WHERE cities.name = 'New York' 
OR countries.name = 'New York'

UNION を使用 (ALLパフォーマンス上の理由から、可能な場合は使用してください)

SELECT cities.name, 'Is a city' AS type
FROM cities
WHERE cities.name = 'New York'
UNION ALL
SELECT countries.name, 'Is a country' AS type
FROM countries
WHERE countries.name = 'New York'

使用NATURAL FULL JOIN

NATURAL FULL JOINUNIONこのブログ記事に示されているように、「正しく」使用すれば、と同様に動作する可能性があります。またはこの中で

SELECT *
FROM 
  (SELECT 'cities' AS source, cities.* FROM cities) cities
NATURAL FULL JOIN 
  (SELECT 'countries' AS source, countries.* FROM countries) countries
WHERE name = 'New York'

おすすめ記事