Difference between revisions of "Using nested SELECT/ja"

From SQLZOO
Jump to: navigation, search
(Multiple Results)
(Subquery on the SELECT line)
Line 48: Line 48:
 
</div>
 
</div>
  
==Subquery on the SELECT line==
+
==SELECT 文のフィールド中のサブクエリ==
If you are certain that only one value will be returned you can use that query on the SELECT line.
+
一つの値だけが求められるようなサブクエリは、SELECT 文のフィールで利用できる。
 
<div class='qu'>
 
<div class='qu'>
<p class='imper'>Show the population of China as a multiple of the population of the United Kingdom</p>
+
<p class='imper'>中国 China の人口 population をイギリス United Kingdom の何倍あるかで表示する</p>
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
 
SELECT
 
SELECT

Revision as of 15:08, 18 April 2018

元のチュートリアル SELECT within SELECT Tutorial/ja に戻る。

SELECT の中で SELECT を使う

導出テーブル(SELECTの実行結果としてのテーブル)の使い方は SELECT FROM SELECT を見る 導出テーブル.

SELECT 文の実行結果は、他のSELECT文の中で 値やテーブルとして利用できる。 次の例文: SELECT continent FROM world WHERE name = 'Brazil' の実行結果は'South America' で、この値をブラジル'Brazil'と同じ大陸にある全ての国名のリストを得るために利用する

ブラジル'Brazil' と同じ大陸にある各国のリストを求める

SELECT name FROM world WHERE continent = 
(SELECT continent 
FROM world WHERE name = 'Brazil')

エイリアス

SQL のバージョンによってはサブクエリにエイリアス(別名)を付けることが必要となる。単にAS 別名 を閉じた括弧(サブクエリ)の後ろに書けばよい:

SELECT name FROM world WHERE continent = 
  (SELECT continent FROM world WHERE name='Brazil') AS brazil_continent

実行結果が複数の値となる場合

サブクエリで複数の値を一度の実行結果として得ることが出来る。もしもそのようなことが起きた場合、上記の例のクエリでは、1個の値と2個以上の値を比較しているので、失敗(実行結果がエラー)となる。 IN を使うことで、この様な可能性により安全に対処できる。

次の文 (SELECT continent FROM world WHERE name = 'Brazil' OR name='Mexico') で、2つの値('North America' and 'South America')が求まる。これを次のように使う:

SELECT name, continent FROM world
WHERE continent IN
 (SELECT continent FROM world WHERE name='Brazil'
                                 OR name='Mexico')

ブラジル'Brazil' またはメキシコ'Mexico' と同じ大陸にある各国とその大陸をリストアップする。

SELECT name, continent FROM world
WHERE continent IN
  (SELECT continent 
     FROM world WHERE name='Brazil'
                   OR name='Mexico')

SELECT 文のフィールド中のサブクエリ

一つの値だけが求められるようなサブクエリは、SELECT 文のフィールで利用できる。

中国 China の人口 population をイギリス United Kingdom の何倍あるかで表示する

SELECT
 population/(SELECT population FROM world
             WHERE name='United Kingdom')
  FROM world
WHERE name = 'China'

Operators over a set

These operators are binary - they normally take two parameters:

=     equals
>     greater than
<     less than
>=    greater or equal
<=    less or equal

You can use the words ALL or ANY where the right side of the operator might have multiple values.

Show each country that has a population greater than the population of ALL countries in Europe.

Note that we mean greater than every single country in Europe; not the combined population of Europe.

SELECT name FROM world
 WHERE population > ALL
      (SELECT population FROM world
        WHERE continent='Europe')

Return to the SELECT within SELECT Tutorial