1

テーブルの area_id が、テーブルの name_en であるエリア名 (I 強調行)citiesで右結合されることを望みます。areas

表 1: 都市

╔════════════╦═════════╦═══════════════╗
║ COUNTRY_ID ║ AREA_ID ║    NAME_EN    ║
╠════════════╬═════════╬═══════════════╣
║ US         ║       1 ║ Los Angeles   ║
║ US         ║       1 ║ San Francisco ║
║ US         ║       2 ║ Kansas City   ║
╚════════════╩═════════╩═══════════════╝

表 2: エリア

╔════╦════════════╗
║ ID ║  NAME_EN   ║
╠════╬════════════╣
║  1 ║ California ║
║  2 ║ Missouri   ║
╚════╩════════════╝

私のクエリ:

SELECT c.country_id, c.area_id, c.name_en 
FROM `cities` AS c RIGHT JOIN `areas` AS a ON c.area_id = a.name_en 
4

3 に答える 3

2

まず第一に、あなたは規則に従わなければなりません、あなたは完全に異なるタイプである2つのフィールドに等しくありません。したがって、それらを等しくするべきではありません。それらは異なるタイプです。一方、右結合はお勧めしません。それ以外は左結合を使用する必要があります。

SELECT a.country_id, a.name_en AS country_nameCountryName, b.name_en AS area_name FROM areas b LEFT JOIN cities a ON b.id = a.area_id

于 2013-03-14T09:08:53.267 に答える
2

ここは必要ありませんがRIGHT JOIN、代わりにINNER JOIN.

SELECT  a.Country_ID, 
        a.Name_en CountryName,
        b.Name_en AreasName
FROM    Cities a
        INNER JOIN Areas b
            ON a.area_ID = b.ID

結合についてさらに詳しく知りたい場合は、以下のリンクにアクセスしてください。

出力

╔════════════╦═══════════════╦════════════╗
║ COUNTRY_ID ║  COUNTRYNAME  ║ AREASNAME  ║
╠════════════╬═══════════════╬════════════╣
║ US         ║ Los Angeles   ║ California ║
║ US         ║ San Francisco ║ California ║
║ US         ║ Kansas City   ║ Missouri   ║
╚════════════╩═══════════════╩════════════╝
于 2013-03-14T09:01:29.907 に答える
2

クエリは

   SELECT c.country_id, c.area_id, c.name_en 
   FROM cities AS c RIGHT JOIN areas AS a ON c.area_id = a.id 
于 2013-03-14T09:01:47.947 に答える