4

ADO を使用して MySQL バックエンドで MS Access 2010 アプリケーションを構築しています。これまでのところ、ADO レコードセットをフォームにバインドして更新することに成功しています。ただし、INNER JOIN を持つ 2 つのテーブルを含む最初のクエリを作成したところ、両方のテーブルからフィールドが返されたときに、返されたレコードセットを更新できません。この最初のクエリで、正常にバインドおよび更新できます。

SELECT table_A.a, table_A.b
FROM table_A INNER JOIN table_B ON table_B.c = table_A.c; 

ただし、table_B からフィールドを追加した瞬間、バインドされたフォームを介してレコードセットを更新できなくなります。新しい MySQL ステートメントは次のようになります。

SELECT table_A.a, table_A.b, table_B.a
FROM table_A INNER JOIN table_B ON table_B.c = table_A.c; 

フォーラムを読みましたが、レコードセットの更新を妨げる通常の問題 (主キーの欠如、集計関数、SELECT DISTINCT など) がクエリに影響していないようです。いくつかのフォーラムは、私の問題がレコードセット間のあいまいさに関連している可能性があることを示唆していますが、私はこれを確認できず、これでうまくいくようです。どんな助けでも大歓迎です。

4

2 に答える 2

1

これを試して:

SELECT table_A.a, table_A.b, CONCAT(table_B.a, '') FROM table_A LEFT JOIN table_B ON table_B.c = table_A.c;
于 2013-02-06T19:21:41.643 に答える
0

最初のクエリでは、表示/取得されたレコード セットは単一のテーブルに属しているため、更新できます。ただし、2 番目のクエリのように、レコードセットは 2 つのテーブル (列は 2 つのテーブルに属します) の結合の結果として取得されるため、直接更新することはできません。

別のテーブルのデータに基づいて一部のデータを更新するには、次のクエリを使用できます

Table_A、Table_B を更新して、Table_A.a=Table_B.a を設定します。ここで、Table_A.b=Table_B.b

于 2012-12-25T17:29:01.320 に答える