| 4D v18SELECT | ||||||||||||||
|  | 
    4D v18
 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を (コンマで区切って) 渡すことができます。オプションのキーワードDISTINCTをSELECT文に渡すと、重複データは返されません。
"*"とフィールドを混在させたクエリを行うことはできません。例えば、以下の文:
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条件を適用するために使用します。ASCやDESCキーワードを追加して、並び替えの昇順・降順を指定することもできます。デフォルトで昇順が適用されます。
オプションのGROUP BY句は、渡されたsort_list条件に基づいて、同じデータをグループ化するために使用します。複数のグループカラムを渡すことができます。この句は冗長を避けたり、集約関数 (SUM、COUNT、MIN、MAX) を計算するために使用できます。これらはグループに対して適用されます。ORDER BY句と同様、ASCやDESCキーワードを追加できます。
オプションの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コマンド
	
        
        
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	SQLリファレンス ( 4D v18)
	
	
 コメントを追加
コメントを追加