SELECT

4D - Documentation   Fran溝is   English   German   日本語   4D SQL Reference目次   4D SQL Referenceインデックス   Back   Previous   Next

version 11.3 (Modified)


SELECT [ALL | DISTINCT]

{* | select_item, ..., select_item}

FROM table_reference, ..., table_reference

[WHERE search_condition]

[ORDER BY sort_list]

[GROUP BY sort_list]

[HAVING search_condition]

[OFFSET 4d_language_reference |int_number]

[LIMIT {4d_language_reference |int_number | ALL}]

[INTO {4d_language_reference, ..., 4d_language_reference | LISTBOX 4d_language_reference}]

[FOR UPDATE]

説明

SELECTコマンドは一つ以上のテーブルからデータを取得するために使用します。

*を渡すと、すべてのカラムを取得します。そうでなければ、取得するカラムを個々に指定するために、select_itemを (コンマで区切って) 渡すことができます。オプションのキーワードDISTINCTSELECT文に渡すと、重複データは返されません。

"*"とフィールドを混在させたクエリを行うことはできません。例えば、以下の文:

SELECT *, SALES, TARGET FROM OFFICES

は許可されません。

SELECT * FROM OFFICES

が可能です。

FROM節は、データを取得するテーブルをtable_referenceで指定するために使用します。標準のSQL名または文字列を渡すことができます。テーブル名の場所にクエリ式を渡すことはできません。オプションのキーワードASを渡して、カラムにエイリアスを割り当てることもできます。このキーワードが渡す際は、エイリアス名を続けます。SQL名または文字列を使用できます。

オプションのWHERE節は、データを選択するための条件を指定します。これはsearch_conditionを渡すことで行われ、FROM節により取得されるデータに適用されます。search_conditionは常にブールタイプの値を返します。

オプションのORDER BY節は、選択されたデータにsort_list条件を適用するために使用します。ASCDESCキーワードを追加して、並び替えの昇順・降順を指定することもできます。デフォルトで昇順が適用されます。

オプションのGROUP BY節は、渡されたsort_list条件に基づいて、同じデータをグループ化するために使用します。複数のグループカラムを渡すことができます。この節は冗長を避けたり、集約関数 (SumCountMinMax) を計算するために使用できます。これらはグループに対して適用されます。ORDER BY節と同様、ASCDESCキーワードを追加できます。

オプションのHAVING節は、これらのグループのひとつにsearch_conditionを適用するために使用します。HAVING節はGROUP BY節なしで渡すこともできます。

オプションのOFFSET節は、LIMIT節のカウントを開始する前にスキップするデータの数 (4d_language_reference変数またはint_number) を指定するために使用します。

オプションのLIMIT節は、返されるデータ数を4d_language_reference変数またはint_numberに制限するために使用します。

オプションのINTO節は、データを格納する変数4d_language_referenceを指定します。LISTBOXキーワードを渡して、4d_language_referenceリストボックスにデータを置くこともできます。

FOR UPDATE節が指定されたSELECTコマンドは、選択されたすべてのレコードへの排他的な書き込みロックを試みます。ロックできないレコードがあると、コマンドの実行に失敗し、エラーが生成されます。すべてのレコードがロックされると、カレントのトランザクションがコミットされるかロールバックされるまで、レコードはロックされたままとなります。

例題

1. 映画のタイトル、公開年、チケット販売数が登録された一つのテーブルからなるデータベースがあります。

1979年以降の映画において、チケット販売総数が年合計1000万未満の年とそのチケット販売総数を取得します。最初の5年をスキップし、その後の10年間のみを表示し、年で並び替えます.

   C_LONGINT($MovieYear;$MinTicketsSold;$Offset;$Limit)
   ARRAY INTEGER(aMovieYear;0)
   ARRAY LONGINT(aTicketsSold;0)
   $MovieYear:=1979
   $MinTicketsSold:=10000000
   $Offset:=5
   $Limit:=10

   Begin SQL
      SELECT Year_of_Movie, Sum(Tickets_Sold)
      FROM MOVIES
      WHERE Year_of_Movie >= :$MovieYear
      GROUP BY Year_of_Movie
      HAVING Sum(Tickets_Sold) < :$MinTicketsSold
      OFFSET :$Offset
      LIMIT :$Limit
      ORDER BY 1
      INTO :aMovieYear, :aTicketsSold;
   End SQL 

2. これは複合検索条件を使用する例です:


   SELECT supplier_id
   FROM suppliers
   WHERE (name = 'CANON')
   or (name = 'Hewlett Packard' and city = 'New York')
   or (name = 'Firewall' and status = 'Closed' and city = 'Chicago');

3. SALES_PERSONSテーブルから売り上げ情報を取得します。QUOTAは売り上げ目標、SALESは実際の売り上げです:



   ARRAY REAL(Min_Values;0)
   ARRAY REAL(Max_Values;0)
   ARRAY REAL(Sum_Values;0)
   Begin SQL
      SELECT Min ( ( SALES * 100 ) / QUOTA ), 
      Max ( ( SALES * 100 ) / QUOTA ), 
      Sum ( QUOTA ) - Sum ( SALES )
      FROM SALES_PERSONS
      INTO :Min_Values, :Max_Values, :Sum_Values;
   End SQL

4. これは指定した都市が出身地の俳優を検索する例です:

   ARRAY TEXT(aActorName;0)
   ARRAY TEXT(aCityName;0)
   Begin SQL  
      SELECT ACTORS.FirstName, CITIES.City_Name
      FROM ACTORS AS 'Act', CITIES AS 'Cit'
      WHERE Act.Birth_City_ID=Cit.City_ID
      ORDER BY 2 ASC
      INTO : aActorName, : aCityName;
   End SQL

参照

4d_language_reference, search_condition, select_item, sort_list, subquery, table_reference.


4D - Documentation   Fran溝is   English   German   日本語   4D SQL Reference目次   4D SQL Referenceインデックス   Back   Previous   Next