0

2 つのテーブルの値とそれらの間の関係を次に示します。

tblProInfo,tblOrderAAtblProInfo.proInfoScienceName='shalosh' のすべての行を削除しようとしています

これが私が書いたコマンドです。クエリを生成できなかったというメッセージが表示されます。

DELETE tblOrderAA.*,  tblProInfo.*
FROM tblProInfo INNER JOIN tblOrderAA ON tblProInfo.proInfoSerialNum = tblOrderAA.orderAASerialPro
WHERE (((tblProInfo.proInfoScienceName)='shalosh'
4

3 に答える 3

3
DELETE a1,  a2
FROM tblProInfo as a1 INNER JOIN tblOrderAA as  a2
ON a1.proInfoSerialNum = a2.orderAASerialPro
WHERE a1.proInfoScienceName='shalosh'

構文は msaccess に従って正しいですが、レコードは削除されません。アクセス削除クエリでは、一度に複数のテーブルから削除することはできません。これはアクセス制限です。

MS-Access で複数のテーブルからレコードを削除する方法については、こちらを参照してください

両方のテーブルが接続されており、削除がカスケードされるように参照整合性が設定されている場合、リンクの片側のレコードを削除するだけで、両方のテーブルから同時にレコードを削除できます。

Sql Server:
単一の削除ステートメントで複数のテーブルから行を削除するという概念は、SQL Server では実行できません。テーブルには、カスケード スタイルで削除を行うトリガーの概念があります。

于 2012-05-15T12:43:48.480 に答える
0

この行には、3 つの開き括弧と 1 つの閉じ括弧があります。

WHERE (((tblProInfo.proInfoScienceName)='shalosh'
于 2012-05-15T12:41:51.330 に答える
0

ステートメントを分離する必要があります。1 つのクエリで 2 つのテーブルから削除することはできません

DELETE FROM tblOrderAA
WHERE tblOrderAA.orderAASerialPro IN
(
    SELECT orderAASerialPro 
    FROM tblProInfo WHERE tblProInfo    
    tblProInfo.proInfoScienceName='shalosh'
)

DELETE FROM orderAASerialPro
WHERE tblProInfo.proInfoScienceName='shalosh'
于 2012-05-15T12:42:30.347 に答える