2

データベースに city という名前のテーブルを作成しました。このテーブルには、「名前」と「国」という 2 つの列があります。以下のさまざまな国の都市の組み合わせを返すクエリを作成しました。

SELECT c1.name, c1.country, c2.name, c2.country 
FROM city c1, city c2
WHERE c1.country != c2.country 

このクエリは機能しますが、都市のペアが繰り返されます。私は結果を得る:

    Berlin Germany London England 
London England Berlin Germany

これは、都市のペア berlin/hamburg が結果セットで繰り返されることを意味します。これを回避する方法はありますか?

4

3 に答える 3

3
SELECT c1.name, c1.country, c2.name, c2.country 
FROM city c1, city c2
WHERE c1.country < c2.country
于 2012-08-06T05:22:39.597 に答える
0

これを行うには、 「結合の視覚的説明」LEFT JOINを参照してください。これを試してください。

SELECT c1.name, c1.country, c2.name, c2.country 
FROM city c1
     LEFT JOIN city c2
         ON c1.country = c2.country 
            AND c1.name = c2.name
WHERE c1.country IS NULL OR 
      c2.country IS NULL;
于 2012-08-06T05:30:05.090 に答える
-1

優れたデータベースでは、1つのテーブルに2つ以上の同じレコードが含まれることはありません。したがって、私の推奨事項は2つのmake2テーブルです。

cities: ID, country_ID, Name
countries: ID, Name

選択は次のようになります。

SELECT c.Name, co.Name
FROM cities c
INNER JOIN countries co
    ON co.ID=c.country_ID 
于 2012-08-06T05:30:55.963 に答える