4D v16

SELECT

ホーム

 
4D v16
SELECT

SELECT  


 

 

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]

[LIMIT {4d_language_reference |int_number | ALL}]

[OFFSET 4d_language_reference |int_number]

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

[FOR UPDATE]

説明  

SELECTコマンドは一つ以上のテーブルからデータを取得するために使用します。
*を渡すと、すべてのカラムを取得します。そうでなければ、取得するカラムを個々に指定するために、1つ以上のselect_itemを (コンマで区切って) 渡すことができます。オプションのキーワードDISTINCTSELECT文に渡すと、重複データは返されません。
"*"とフィールドを混在させたクエリを行うことはできません。例えば、以下の文:

SELECT *, SALES, TARGET FROM OFFICES

は許可されません。対して

SELECT * FROM OFFICES

が可能です。

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

注: このコマンドはオブジェクト型の4Dフィールドをサポートしていません。

オプションの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句なしで渡すこともできます。

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

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

オプションのINTO句は、データを格納する変数4d_language_referenceを指定するために使用します。

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

映画のタイトル、公開年、チケット販売数が登録された一つのテーブルからなるデータベースがあります。
1979年以降の映画において、チケット販売総数が年合計1000万未満の年とそのチケット販売総数を取得します。最初の5年をスキップし、その後の10年間のみを表示し、年で並び替えます.

 C_LONGINT($MovieYear;$MinTicketsSold;$StartYear;$EndYear)
 ARRAY INTEGER(aMovieYear;0)
 ARRAY LONGINT(aTicketsSold;0)
 $MovieYear:=1979
 $MinTicketsSold:=10000000
 $StartYear:=5
 $EndYear:=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
    ORDER BY 1
    LIMIT :$EndYear
    OFFSET :$StartYear
    INTO :aMovieYear, :aTicketsSold;
 End SQL

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

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');

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

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

 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
テーマ: SQLコマンド

 
履歴 

 
ARTICLE USAGE

SQLリファレンス ( 4D v16)