2016-08-09 6 views
2

参加し、私が使用することができます。更新アクセスでは、コンパクトなSQLに

UPDATE Projects 
    INNER JOIN (Images INNER JOIN ImageCrossRef 
    ON Images.ImageId = ImageCrossRef.ImageId) 
    ON Projects.ProjectID = ImageCrossRef.ProjectId 
    SET Images.Folder = [Projects].[Folder]; 

を内側の2つに基づいて、テーブル内のフィールドを更新するために別のフィールドに参加しますが、これはコンパクトなSQLに失敗しました。私はWHERE EXISTSで様々な提案を試みましたが、どれもうまくいかないようです。助言がありますか?

+0

使用するdbmsにタグを付けます。 (そのコードはANSI SQLではありません) – jarlh

+0

内部結合の結果に基づいて値を設定しようとしています(つまり、images.folder =(select * ...)を設定します)。更新する行を決定する – EJoshuaS

答えて

0

特定の種類のクエリは「直接更新可能」ではないことを「はっきりと認識する」必要があります。これはそれらの一つかもしれません。 Microsoft Accessができること、他のエンジンはできないことがあります。

「ネストされたクエリ」を使用して、更新されるレコードのID(Images)を提供することもありますが、それらに挿入する必要がある値を指定します。

第2の可能性は、基本的にSQLサーバーによって実行される小さなサブプログラムである「ストアドプロシージャ」を使用することです。そのプロシージャのコードは以前と同じようにSELECTを実行し、ループ内の個々のUPDATEステートメントを発行してその結果セットを反復処理します。

私は十分に身近ではないコンパクト実際にコード例を書くためのSQLがありますが、少なくともこれについて考えてほしいオプションがあることを願っています。 "HTH ..."

関連する問題