Difference between revisions of "Using nested SELECT/ja"

From SQLZOO
Jump to navigation Jump to search
(Created page with "Return to the SELECT within SELECT Tutorial ==Using SELECT in SELECT== <p>See SELECT FROM SELECT for how to use a [http://sqlzoo.net/w/index.php/SELECT_.._SELECT derived t...")
 
 
(9 intermediate revisions by the same user not shown)
Line 1: Line 1:
Return to the [[SELECT within SELECT Tutorial]]
+
{{Languages|Using_nested_SELECT}}
==Using SELECT in SELECT==
+
元のチュートリアル [[SELECT within SELECT Tutorial/ja]] に戻る。
<p>See SELECT FROM SELECT for how to use a [http://sqlzoo.net/w/index.php/SELECT_.._SELECT derived table].</p>
+
==SELECT の中で SELECT を使う==
     <p>The result of a SELECT statement may be used as a value in
+
<p>導出テーブル(SELECTの実行結果としてのテーブル)の使い方は SELECT FROM SELECT を見る [http://sqlzoo.net/w/index.php/SELECT_.._SELECT/ja 導出テーブル].</p>
     another statement. For example the statement
+
     <p>SELECT 文の実行結果は、他のSELECT文の中で 値やテーブルとして利用できる。
 +
     次の例文:
 
     <b>SELECT continent FROM world WHERE name = 'Brazil'</b>
 
     <b>SELECT continent FROM world WHERE name = 'Brazil'</b>
  
     evaluates to <code>'South America'</code> so we can use this value to
+
     の実行結果は<code>'South America'</code> で、この値をブラジル'Brazil'と同じ大陸にある全ての国名のリストを得るために利用する</p>
    obtain a list of all countries in the same continent as
 
    'Brazil'</p>
 
  
 
<div class='qu'>
 
<div class='qu'>
List each country in the same continent as 'Brazil'.
+
ブラジル'Brazil' と同じ大陸にある各国のリストを求める
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
 
SELECT name FROM world WHERE continent =  
 
SELECT name FROM world WHERE continent =  
Line 19: Line 18:
 
</div>
 
</div>
  
==Alias==
+
==エイリアス==
<p>Some versions of SQL insist that you give the subquery an <i>alias</i>. Simply put <code>AS somename</code> after the closing bracket:
+
<p>SQL のバージョンによってはサブクエリに<i>エイリアス(別名)</i>を付けることが必要となる。単に<code>AS 別名</code> を閉じた括弧(サブクエリ)の後ろに書けばよい:
 
<pre>
 
<pre>
 
SELECT name FROM world WHERE continent =  
 
SELECT name FROM world WHERE continent =  
Line 27: Line 26:
 
</p>
 
</p>
  
==Multiple Results==
+
==実行結果が複数の値となる場合==
  
The subquery may return more than one result - if this happens the query above will fail as you are testing one value against more than one value.
+
サブクエリで複数の値を一度の実行結果として得ることが出来る。もしもそのようなことが起きた場合、上記の例のクエリでは、1個の値と2個以上の値を比較しているので、失敗(実行結果がエラー)となる。
It is safer to use IN to cope with this possibility.
+
IN を使うことで、この様な可能性により安全に対処できる。
  
The phrase <code>(SELECT continent FROM world WHERE name = 'Brazil' OR name='Mexico')</code>
+
次の文 <code>(SELECT continent FROM world WHERE name = 'Brazil' OR name='Mexico')</code>
will return two values ('North America' and 'South America'). You should use:
+
で、2つの値('North America' and 'South America')が求まる。これを次のように使う:
 
  SELECT name, continent FROM world
 
  SELECT name, continent FROM world
 
  WHERE continent IN
 
  WHERE continent IN
Line 40: Line 39:
  
 
<div class='qu'>
 
<div class='qu'>
List each country and its continent in the same continent as 'Brazil' or 'Mexico'.
+
ブラジル'Brazil' またはメキシコ'Mexico' と同じ大陸にある各国とその大陸をリストアップする。
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
 
SELECT name, continent FROM world
 
SELECT name, continent FROM world
Line 50: Line 49:
 
</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
Line 63: Line 62:
 
</div>
 
</div>
  
==Operators over a set==
+
==集合に対するオペレータ(演算子)==
These operators are ''binary'' - they normally take two parameters:
+
2項演算のオペレータは通常は2つのパラメータを伴う:
  =    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.
+
ALL または ANY のキーワードをオペレータの右側に指定すると複数の値を扱うことが出来る様になる。
 
<div class='qu'>
 
<div class='qu'>
<p class='imper'>Show each country that has a population greater than the population of ALL countries in Europe.</p>
+
<p class='imper'>ヨーロッパ Europe のすべてのALL 国の人口よりも大きな人口の国を表示する。</p>
Note that we mean greater than every single country in Europe; not the combined population of Europe.
+
注)ヨーロッパのそれぞれの一国の人口より大きいことを意味する。ヨーロッパ全体の人口(合算)ではない。
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
 
SELECT name FROM world
 
SELECT name FROM world
Line 82: Line 81:
 
</div>
 
</div>
  
Return to the [[SELECT within SELECT Tutorial]]
+
[[SELECT within SELECT Tutorial/ja]]に戻る。

Latest revision as of 06:23, 24 March 2020

Language:Project:Language policy English  • 日本語 • 中文

元のチュートリアル 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'

集合に対するオペレータ(演算子)

2項演算のオペレータは通常は2つのパラメータを伴う:

=     等しい
>     より大きい
<     より小さい
>=    より大きいか等しい
<=    より小さいか等しい

ALL または ANY のキーワードをオペレータの右側に指定すると複数の値を扱うことが出来る様になる。

ヨーロッパ Europe のすべてのALL 国の人口よりも大きな人口の国を表示する。

注)ヨーロッパのそれぞれの一国の人口より大きいことを意味する。ヨーロッパ全体の人口(合算)ではない。

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

SELECT within SELECT Tutorial/jaに戻る。