2017-09-30 10 views
-1

あるメインテーブルから、別のテーブルに関連するエントリを持つレコードを削除したいとします。異なるテーブルのチェックに基づく削除アクションの照会

だから私は他のテーブルに

SELECT  c.name AS 'ColumnName' 
      ,t.name AS 'TableName' 
FROM  sys.columns c 
JOIN  sys.tables t ON c.object_id = t.object_id 
WHERE  c.name LIKE '%customerid%' 
ORDER BY TableName 
      ,ColumnName; 

customeridの要素を持っているテーブルを知るためにコマンドを実行した私はいくつかのテーブルに

cust_shipping 注文 cust_billing 最近 レビュー

すべてのを見つけました上記の表は同じ列キーを持っています。customerid

は今、私は彼/彼女がordersテーブル

の中にレコードがない場合にのみ、顧客を削除すると、彼は持っていない場合には、顧客が

問題が来て、出荷と請求を削除できません。その顧客の複数のアドレスを持つことができ、それはあまりにも最近にそこから削除することができ方法は、二つのテーブルとテーブルすぎ

答えて

0

Exempleレビュー:

-- DELETE target with no orders. 

    DELETE target 
    FROM cust_shipping as target 
    LEFT JOIN orders as O ON (target.customerid = O.customerid) 
    WHERE O.customerid IS NULL 

    DELETE target 
    FROM cust_billing as target 
    LEFT JOIN orders as O ON (target.customerid = O.customerid) 
    WHERE O.customerid IS NULL 

    -- do the same for all concerned table... 
+0

DELETターゲットを削除またはターゲットにすると、ステートメントは良好ですが非常に曖昧です – Himan

+0

"ターゲットを削除または削除またはターゲットする"。申し訳ありませんが、あなたは私の答えでそのようなものを見つけたかわかりません...私はあなたに2つのexemplesを与えました。 1はcust_shipping、1はcust_billingテーブル。 「最近の」と「レビュー」の表で同じことをする... – clementakis

関連する問題