4D v16

結合

ホーム

 
4D v16
結合

結合  


 

 

ここでは、出演者ごとの出身地を取得します。出演者のリストはACTORSテーブルにあり、都市のリストはCITIESテーブルにあります。このク エリを実行するには、ACTORSとCITIES二つのテーブルを結合しなければなりません。

  • 4Dコードは以下のようになります:

     ARRAY LONGINT(aSoldTickets;0)
     ARRAY TEXT(aTitles;0)
     ARRAY TEXT(aDirectors;0)
     C_LONGINT($i;$vInd)
     
     $vInd:=0
     ALL RECORDS([ACTORS])
     For($i;1;Records in selection([ACTORS]))
        $vInd:=$vInd+1
        INSERT IN ARRAY(aTitles;$vInd;1)
        aTitles{$vInd}:=[ACTORS]FirstName+" "+[ACTORS]LastName
        RELATE ONE([ACTORS]Birth_City_ID)
        INSERT IN ARRAY(aDirectors;$vInd;1)
        aDirectors{$vInd}:=[CITIES]City_Name
        NEXT RECORD([ACTORS])
     End for
      ` 情報を表示するために他のリストボックス列を初期化します
     ARRAY INTEGER(aMovieYear;Size of array(aTitles))
     ARRAY TEXT(aMedias;Size of array(aTitles))
     ARRAY LONGINT(aSoldTickets;Size of array(aTitles))
     ARRAY LONGINT(aNrActors;Size of array(aTitles))
     MULTI SORT ARRAY(aDirectors;>;aTitles;>;aMovieYear;aMedias;aSoldTickets;aNrActors)
  • SQLコードの場合:

     ARRAY TEXT(aTitles;0)
     ARRAY TEXT(aDirectors;0)
     
     Begin SQL
        SELECT CONCAT(CONCAT(ACTORS.FirstName,' '),ACTORS.LastName), CITIES.City_Name
        FROM ACTORS, CITIES
        WHERE ACTORS.Birth_City_ID=CITIES.City_ID
        ORDER BY 2,1
         INTO :aTitles, :aDirectors;
     End SQL
      ` 情報を表示するために他のリストボックス列を初期化します
     ARRAY INTEGER(aMovieYear;Size of array(aTitles))
     ARRAY TEXT(aMedias;Size of array(aTitles))
     ARRAY LONGINT(aSoldTickets;Size of array(aTitles))
     ARRAY LONGINT(aNrActors;Size of array(aTitles))
  • 汎用SQLコマンドの場合:

     ARRAY TEXT(aTitles;0)
     ARRAY TEXT(aDirectors;0)
     C_TEXT($tQueryTxt)
     
     SQL LOGIN(SQL_INTERNAL;"";"")
     $tQueryTxt:=""
     $tQueryTxt:=$tQueryTxt+"SELECT CONCAT(CONCAT(ACTORS.FirstName,' '),ACTORS.LastName), CITIES.City_Name"
     $tQueryTxt:=$tQueryTxt+" FROM ACTORS, CITIES"
     $tQueryTxt:=$tQueryTxt+" WHERE ACTORS.Birth_City_ID=CITIES.City_ID"
     $tQueryTxt:=$tQueryTxt+" ORDER BY 2,1"
     SQL EXECUTE($tQueryTxt;aTitles;aDirectors)
     SQL LOAD RECORD(SQL all records)
     SQL LOGOUT
      ` 情報を表示するために他のリストボックス列を初期化します
     ARRAY INTEGER(aMovieYear;Size of array(aTitles))
     ARRAY TEXT(aMedias;Size of array(aTitles))
     ARRAY LONGINT(aSoldTickets;Size of array(aTitles))
     ARRAY LONGINT(aNrActors;Size of array(aTitles))
  • QUERY BY SQLコマンドでは、このクエリを実行できません。なぜなら このコマンドの一番目の引数に二つ以上のテーブルを渡せないためです。
  • SQLのEXECUTE IMMEDIATEコマンドの場合:

     ARRAY TEXT(aTitles;0)
     ARRAY TEXT(aDirectors;0)
     C_TEXT($tQueryTxt)
     
     $tQueryTxt:=""
     $tQueryTxt:=$tQueryTxt+"SELECT CONCAT(CONCAT(ACTORS.FirstName,' '),ACTORS.LastName), CITIES.City_Name"
     $tQueryTxt:=$tQueryTxt+" FROM ACTORS, CITIES"
     $tQueryTxt:=$tQueryTxt+" WHERE ACTORS.Birth_City_ID=CITIES.City_ID"
     $tQueryTxt:=$tQueryTxt+" ORDER BY 2,1"
     $tQueryTxt:=$tQueryTxt+" INTO :aTitles, :aDirectors"
     Begin SQL
        EXECUTE IMMEDIATE :$tQueryTxt;
     End SQL
      ` 情報を表示するために他のリストボックス列を初期化します
      ARRAY INTEGER(aMovieYear;Size of array(aTitles))
     ARRAY TEXT(aMedias;Size of array(aTitles))
     ARRAY LONGINT(aSoldTickets;Size of array(aTitles))
     ARRAY LONGINT(aNrActors;Size of array(aTitles))


    これらをテストするに は、4D SQL Code Samplesデータベースを起動してメインウィンドウを表示させます。クエリモードを選択してJoins ボタンをクリックします。

 
プロパティ 

プロダクト: 4D
テーマ: チュートリアル

 
履歴 

 
ARTICLE USAGE

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