2

レンタルされているが 3 年以上返却されていないツールをすべてリストします。それらのツールを削除します

複数のテーブルを持つデータベースがあります。これらのいくつかはRENTAL_ORDERLINESTOCK_TOOLおよびCATALOGUEです。

RENTAL_ORDERLINEツールが貸し出された日付があり、 を介して STOCK_TOOL にリンクされていforeign keyます。

ストック ツールは、外部キーを介してカタログ (Tool_Name を格納) にリンクされます。
レンタルしたものの 3 年以上返却されていないすべてのツールを一覧表示するデータ クレンジング スクリプトを作成し、これらのツールを削除したいと考えています。削除するツールを出力する select ステートメントを作成しましたが、delete ステートメントをそれに組み込むことはできません。

select rental_orderline.tool_id, catalogue.tool_name
from rental_orderline right outer join stock_tool
on stock_tool.tool_id = rental_orderline.tool_id
right outer join catalogue
on catalogue.catalogue_number = stock_tool.catalogue_number
where rental_orderline.date_out < add_months(sysdate, -36)
and rental_orderline.date_in is null;)
where rental_orderline.date_out < add_months(sysdate, -36)
and rental_orderline.date_in is null;

TOOL_ID TOOL_NAME

7 マレット
8 ドリル
9 のこぎり

同じクエリで出力を削除する必要があります

delete from stock_tool 
where tool_id = 7, 8, 9;

何か案は?

4

1 に答える 1

0

何かのようなもの

delete from stock_tool where tool_id IN (
    select rental_orderline.tool_id
    from rental_orderline right outer join stock_tool
    on stock_tool.tool_id = rental_orderline.tool_id
    right outer join catalogue
    on catalogue.catalogue_number = stock_tool.catalogue_number
    where rental_orderline.date_out < add_months(sysdate, -36)
    and rental_orderline.date_in is null;)
    where rental_orderline.date_out < add_months(sysdate, -36)
    and rental_orderline.date_in is null
);

?

于 2012-11-28T17:25:33.957 に答える