2017-08-05 6 views
0

私はSQLに慣れていないので、私はあなたの助けに感謝し、これが何か単純であればあなたの許しを請う、私は他の関連記事で私を助けた答えを見つけることができませんでした。テーブルから削除する他のテーブルのWHERE条件が満たされている

テーブルPRC_FIXIM_ITEMが必要です。それらは両方とも列ITEM_NOを持っています。 PRC_FIXの行を削除します。IM_ITEM.ITEM_VEND_NOTOYMとなります。

何らかの結合を行う必要がありますか?あなたの助けをもう一度ありがとう。

編集:カスケードDELETEを設定する手助けは必要ありません。 IM_ITEMの一致する行が特定の条件を満たすと、PRC_FIXから行を削除する方法を尋ねています。

+0

私の答えのスクリプトは、あなたが望むように単に 'PRC_FIX'を削除します。試してみて、結果を教えてください。 –

答えて

0

賢いアプローチを:

DELETE PRC_FIX 
FROM PRC_FIX 
INNER JOIN IM_ITEM ON IM_ITEM.ITEM_NO = PRC_FIX.ITEM_NO 
      AND IM_ITEM.ITEM_VEND_NO = 'TOYM' 
存在しないものを削除し、開始するに

私はあなたに役立つことを願っています:)

+0

これを試してみましょう。ありがとう – enano2054

+0

それはそれをしました。ありがとう! – enano2054

2

これを行う正しい方法は、カスケード削除外部キー制約を設定することです。彼らはim_itemから削除されたときに自動的に行を削除し、その後

delete f from prc_fix f 
    where not exists (select 1 from im_item i where i.item_no = f.item_no); 

alter table prc_fix add constraint fk_prc_fix_item_no 
    foreign key (im_item) references im_item(item_no) on delete cascade; 
+0

これらは、IM_ITEMから削除されたときにPRC_FIXから削除するようにすでに設定されています。私は特定の基準が満たされたときにPRC_FIXからのみ削除することを検討しています – enano2054

1
DELETE FROM PRC_FIX 
WHERE ITEM_NO= 
(SELECT ITEM_NO FROM IM_ITEM WHERE ITEM_VEND_NO='TOYM') 
関連する問題