ここではチケット販売に関する統計情報を取得します。チケットの総販売平均よりもチケットが売れた映画を取得します。このクエリをSQLで実行するために、クエリの中でクエリを行います。これをサブクエリと呼びます。
 - SQLの場合:
 
  ARRAY LONGINT(aSoldTickets;0)
 ARRAY TEXT(aTitles;0)
 Begin SQL
 SELECT Title, Sold_Tickets
 FROM MOVIES
 WHERE Sold_Tickets > (SELECT AVG(Sold_Tickets) FROM MOVIES)
 ORDER BY 1
 INTO :aTitles, :aSoldTickets;
 End SQL
 
 ARRAY INTEGER(aMovieYear;Size of array(aTitles))
 ARRAY TEXT(aDirectors;Size of array(aTitles))
 ARRAY TEXT(aMedias;Size of array(aTitles))
 ARRAY LONGINT(aNrActors;Size of array(aTitles))
 SORT ARRAY(aTitles;aDirectors;aMovieYear;aMedias;aSoldTickets;aNrActors;>)
 
- 汎用SQLコマンドの場合:
 
  ARRAY LONGINT(aSoldTickets;0)
 ARRAY TEXT(aTitles;0)
 C_TEXT($tQueryTxt)
 
 SQL LOGIN(SQL_INTERNAL;"";"")
 $tQueryTxt:=""
 $tQueryTxt:=$tQueryTxt+"SELECT Title, Sold_Tickets"
 $tQueryTxt:=$tQueryTxt+" FROM MOVIES"
 $tQueryTxt:=$tQueryTxt+" WHERE Sold_Tickets > (SELECT AVG(Sold_Tickets) FROM MOVIES)"
 $tQueryTxt:=$tQueryTxt+" ORDER BY 1"
 SQL EXECUTE($tQueryTxt;aTitles;aSoldTickets)
 SQL LOAD RECORD(SQL all records)
 SQL LOGOUT
 
 ARRAY INTEGER(aMovieYear;Size of array(aTitles))
 ARRAY TEXT(aDirectors;Size of array(aTitles))
 ARRAY TEXT(aMedias;Size of array(aTitles))
 ARRAY LONGINT(aNrActors;Size of array(aTitles))
 SORT ARRAY(aTitles;aDirectors;aMovieYear;aMedias;aSoldTickets;aNrActors;>)
- QUERY BY SQLコマンドの場合:
 
  ARRAY LONGINT(aSoldTickets;0)
 ARRAY TEXT(aTitles;0)
 
 QUERY BY SQL([MOVIES];"Sold_Tickets > (SELECT AVG(Sold_Tickets) FROM MOVIES)")
 ORDER BY([MOVIES];[MOVIES]Title;>)
 SELECTION TO ARRAY([MOVIES]Title;aTitles;[MOVIES]Sold_Tickets;aSoldTickets)
 
 ARRAY INTEGER(aMovieYear;Size of array(aTitles))
 ARRAY TEXT(aDirectors;Size of array(aTitles))
 ARRAY TEXT(aMedias;Size of array(aTitles))
 ARRAY LONGINT(aNrActors;Size of array(aTitles))
 SORT ARRAY(aTitles;aDirectors;aMovieYear;aMedias;aSoldTickets;aNrActors;>)
- SQLのEXECUTE IMMEDIATEコマンドの場合:
 
  ARRAY LONGINT(aSoldTickets;0)
 ARRAY TEXT(aTitles;0)
 C_TEXT($tQueryTxt)
 
 $tQueryTxt:=""
 $tQueryTxt:=$tQueryTxt+"SELECT Title, Sold_Tickets"
 $tQueryTxt:=$tQueryTxt+" FROM MOVIES"
 $tQueryTxt:=$tQueryTxt+" WHERE Sold_Tickets > (SELECT AVG(Sold_Tickets) FROM MOVIES)"
 $tQueryTxt:=$tQueryTxt+" ORDER BY 1"
 $tQueryTxt:=$tQueryTxt+" INTO :aTitles, :aSoldTickets"
 Begin SQL
 EXECUTE IMMEDIATE :$tQueryTxt;
 End SQL
 
 ARRAY INTEGER(aMovieYear;Size of array(aTitles))
 ARRAY TEXT(aDirectors;Size of array(aTitles))
 ARRAY TEXT(aMedias;Size of array(aTitles))
 ARRAY LONGINT(aNrActors;Size of array(aTitles))
 
これらをテストするには、4D SQL Code Samplesデータベースを起動してメインウィンドウを表示させます。クエリモードを選択してSubqueriesボタンをクリックします。