2017-05-30 5 views
-3

SQLでは、テーブルAからテーブルBに依存するデータを削除しました。
削除するデータは、2つの条件WorkArea='123' and FileNo='45'を満たす必要があります。SQL内の依存

BWorkAreaですが、FileNoのデータは含まれていません。
Aには、両方の条件を満たすレコードが含まれています。

参照キーはありません。より明確にするために、ここにクエリを追加してください:

*テーブルAから選択* WorkArea = '123'とFileNo = '45 ';

結果レコードが生成されます。しかし、それは表Bに依存するので、私はそれを直接削除することはできません。また、WorkAreaのデータが全体で多くのファイルが含まれているため、特定のファイルを削除する必要があるため、テーブルBから削除することはできません。

テーブルAからデータを削除するにはどうすればよいですか?

This is Table A with col1 and col2 as primary key.

This is Table B with col1 as a primary key.

+2

テーブル構造お願いします。 – Ravi

+3

サンプルテーブルのデータと構造を追加してください。 – Yugandhar

+0

これらのテーブルの間に外部キーを設定していますか?私の前に誰もが言ったように:テーブル構造/データ(例)はあなたに答える必要があります – Hybris95

答えて

0

あなたは何の外部キーを持っていない場合は、次の文は動作します。

DELETE FROM [A] WHERE [WorkArea] = '123' AND [FileNo] = '45'; 

その後、あなたは次の要求を持つテーブルBの「孤児」があるかどうかを確認programmaticalyすることができます、この最後の部分を強化し、それからDELETE文を生成するために

SELECT DISTINCT [B].[WorkArea] 
FROM [B] 
LEFT JOIN [A] 
ON [A].[WorkArea] = [B].[WorkArea] 
WHERE [A].[WorkArea] IS NULL 

だけで結果を保存しますこの要求をテンポラリテーブルにコピーし、INキーワードを持つWHEREステートメントとして使用します。

+0

@ Hybris95ありがとうございました! –

+0

自由にupvote /答えを受け入れる – Hybris95