如何从完整外部联接中删除表条目?

时间:2015-10-07 00:07:11

标签: oracle

我所拥有的是几张桌子......其中两张是:

CREATE TABLE Orders(
oid int NOT NULL,
rdate date,
sdate date,
cid int NOT NULL,
eid int NOT NULL,
PRIMARY KEY (oid),
FOREIGN KEY (cid) REFERENCES Customer(cid),
FOREIGN KEY (eid) REFERENCES Employee(eid));

CREATE TABLE PartOrder(
poid int NOT NULL,
pid int NOT NULL,
oid int NOT NULL,
PRIMARY KEY (poid),
FOREIGN KEY (pid) REFERENCES Part(pid),
FOREIGN KEY (oid) REFERENCES Orders(oid));

我需要做的是:

  

创建并执行一个查询,删除过去发货日期的订单的所有PartOrder记录。

所以,我想出了这个......

DELETE 
FROM (SELECT * FROM PartOrder FULL OUTER JOIN Orders ON partorder.oid=orders.oid)
WHERE sdate<sysdate;

这给了我这个错误:

  

ORA-01752:如果没有一个保存密钥的表

,则无法从视图中删除

有人可以给我一些见解吗?

1 个答案:

答案 0 :(得分:0)

我把它写成像

这样的东西
DELETE FROM PARTORDER
  WHERE POID IN (SELECT p.POID
                   FROM PARTORDER p
                   INNER JOIN ORDERS o
                     ON o.OID = p.OID
                   WHERE o.SDATE < SYSDATE);

祝你好运。