-2

私はfiledsのテーブルを持っています

テーブル名:
CountriesInfo

国| 大陸
-------- | ----------
インド| アジア
中国| アジア
アイルランド| ヨーロッパ
イギリス| ヨーロッパ
  1. ユーザーは国を選択します
  2. システムは、選択した国と同じ大陸にある他のすべての国を表示する必要があります。JOINSのみを使用します(サブクエリではありません)。取得する方法はありますか?
4

6 に答える 6

1

システムは、選択した国と同じ大陸にある他のすべての国を表示する必要があります。JOINSのみを使用します(サブクエリではありません)。取得する方法はありますか?

はい、これがそれを取得する方法です。これは、SQLServerとMySQLの両方で機能します。

SELECT DISTINCT C2.country 
FROM CountriesInfo C1 
JOIN CountriesInfo C2 ON C1.continent=C2.continent 
WHERE C1.country='INDIA'

MySQLのデモを
見るSQLServerのデモを見る

于 2012-08-21T07:45:20.843 に答える
1

これを試して:

同じテーブルで結合して結果を得ることができます:

select C.country
from   CountriesInfo C 
join
    (select *
     from  CountriesInfo
     where country='India')a
on C.continent=a.continent


SQLフィドルデモ

于 2012-08-21T07:31:30.127 に答える
0
Select s.country 
from countriesInfo R, countriesInfo S
where r.country = 'india'
and s.continent = r.continent
于 2012-08-21T07:33:04.817 に答える
0
SELECT DISTINCT ci2.country FROM CountriesInfo ci1
JOIN CountriesInfo ci2 ON ci1.continent=ci2.continent
WHERE ci1.country=<SELECTED_COUNTRY>
于 2012-08-21T07:34:33.857 に答える
0

このクエリを使用して、テーブルを自己結合します。

SELECT T2.Country
FROM CountriesInfo T1
JOIN CountriesInfo T2 ON T1.Continent = T2.Continent
WHERE T1.Country = 'Ireland'

もちろん、(「アイルランド」の代わりに)where句にパラメータを渡すことができます。このクエリはそれ自体が自己結合であり、選択した大陸と同じ大陸にある国のリストを提供します。

于 2012-08-21T07:31:43.290 に答える
0

これは私には宿題のように見えます!これを行う1つの方法は、次のようになります。

DECLARE @chosenCountry VARCHAR(MAX)
SET @chosenCountry = 'India' -- Set it however you want here...

SELECT ciSameContinent.country FROM CountriesInfo ci
INNER JOIN CountriesInfo ciSameContinent ON ci.continent = ciSameContinent.continent
WHERE ci.country = @chosenCountry
AND ciSameContinent.country <> @chosenCountry -- Forgot this bit which is needed to exclude the chosen country as per the question

これは、同じ大陸から他の国を返し(選択した国を除外し)、サブセレクトを使用しないため、要件を満たします。

于 2012-08-21T07:35:17.423 に答える