2011-09-17 9 views
0

異なるテーブルの条件に基づいてあるテーブルのレコードを削除したいが、「削除するレコードを含むテーブルを指定する」というエラーメッセージが表示されます。 (私はテーブル "RO"のすべてのレコードを削除したい、テーブル "CO"は基準目的のためだけです)。コピー&ペーストするための適切なSQLを提供してください(私はSQLを知らず、クエリビルダーを使用しています)。ここで異なるテーブルの条件に基づいて1つのテーブルのレコードを削除する

DELETE CO.ID, CO.PRINTED_DATE, RO.STATUS, RO.orderID, RO.CREATE_DATE, RO.NAME, RO.cust_ID, RO.lines, RO.PICKER, RO.COMMENTS, RO.sls_rep, RO.weight, RO.PO_number, RO.Tracking_Number, RO.ship_via, RO.nmbrOfBoxes 
FROM tmpReleasedOrders AS RO 
LEFT JOIN SYSADM_CUSTOMER_ORDER AS CO ON RO.orderID = CO.ID 
WHERE (((RO.STATUS)="C" Or (RO.STATUS)="X")) OR (((CO.ID) Is Null)) OR (((CO.PRINTED_DATE) Is Null)); 

答えて

1

は、別のテーブルから条件を持って削除クエリの構文は次のとおりです。

DELETE tmpReleasedOrders.* 
FROM tmpReleasedOrders AS RO 
    LEFT JOIN SYSADM_CUSTOMER_ORDER AS CO ON (RO.orderID = CO.ID) 
WHERE (RO.STATUS="C") OR (RO.STATUS="X") OR (CO.ID Is Null) 
+1

私はエラーを取得する:「Microsoft Jetデータベースエンジンが認識しない有効なものとして 『tmpReleasedOrdersを*。』フィールド名または式。修正は、 'DELETE tmpReleasedOrders。* FROM tmpReleasedOrders AS RO ...'を 'DELETE RO。* からtmpReleasedOrders AS RO ... ' – onedaywhen

+0

"削除にフィールド名を指定する必要はありません。 - 列リストのプレースホルダーとして '*'を使うことや、テーブル自体ではなくテーブルの相関名を指定することが大変なことではありません。私はこれが好きです: 'DELETE FROM tmpReleasedOrdersどこのステータス( 'C'、 'X')または存在しないか(SELECT * FROM SYSADM_CUSTOMER_ORDER CO COID = tmpReleasedOrders.orderID); ' – onedaywhen

+0

私は同じ問題を抱えています。 JohnFxの提案に基づいて構文を修正しようとしました。ここに私のコードです。テーブル名のスペースによって問題が発生していますか?登録ユーザーテーブルはSharepointサイトにリンクされています。 (登録ユーザー).ModUseID = RegisteredUsersInventory.ModUseID)WHERE(RegisteredUsersInventory.ModUse_EndDT Is Null); 'DELETE [登録ユーザー]。* FROM [登録ユーザー] INNER JOIN RegisteredUsersInventory ON – RBSt

関連する問題