ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com |
||||||||||||||
|
4D v20
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 v20)