単一のデータベース内の複数のテーブルを検索しようとしていますが、うまくいきません。
都市と国の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 JOIN
UNION
このブログ記事に示されているように、「正しく」使用すれば、と同様に動作する可能性があります。またはこの中で。
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'