【发布时间】:2019-02-01 11:07:01
【问题描述】:
这里有 3 张桌子 1.employee(eid,ename), 2.地址(援助,地址), 3.employee_add(eid,aid)
employee 和 address 中存在多对多关系。我需要做的是从 address 表中清除重复项,而不会从 employee_add 表中丢失任何数据。提前致谢!请帮忙
DECLARE
a ADDRESS.AID%TYPE;
b ADDRESS.ADDRESS%TYPE;
c ADDRESS.AID%TYPE;
d ADDRESS.ADDRESS%TYPE;
CURSOR Cur1 IS
SELECT AID,ADDRESS
FROM ADDRESS;
CURSOR Cur2 IS
SELECT AID,ADDRESS
FROM ADDRESS;
BEGIN
OPEN Cur1;
LOOP
FETCH Cur1 INTO a, b;
EXIT WHEN Cur1%NOTFOUND;
OPEN Cur2;
LOOP
FETCH Cur2 into c,d;
IF (b=d) THEN
IF(a!=c) THEN
update employee_add set aid=a where aid=c;
delete from address where aid=c;
END IF;
END IF;
END LOOP;
CLOSE Cur2;
END LOOP;
CLOSE Cur1;
END;
【问题讨论】:
-
那么您会在employee_add 表中重复行吗?例如。如果 eid= 1 有 3 个重复的地址,那么您最终会在 employee_add 中得到 3 行具有相同 eid 和帮助的行。这有意义吗,还是我们也应该从employee_add 中删除重复的行?
-
显示每个表中的一些示例行,并告诉我们您想要实现的具体目标。看起来,您只需要纯 SQL 中的简单 DML 语句。但是,示例数据将极大地帮助我们进行测试并为您提供可行的解决方案。
-
[员工表:1---amar 2-virat 3---aaditya] ,,,,,,,, [地址表--101--banglore 102---banglore 103- ---banglore 104----patna 105----patna 106---patna 107--patna 108---pune 109--pune ] .......... [employee_address 表 1- -101 1---102 1---103 1---107 2--101 2--102 2---105 3--102 3---108] 我想要的是---地址表[ 101---banglore 104----patna 108---pune] 和employee_address[1--101 1--104 2--101 2--104 3--101 3--108] 我已经给出了代码它显示相同的结果,即使地址表是参考下面的答案 nt 工作帮助
-
这是代码stackoverflow.com/a/54485061/11000599 它正在工作但没有显示我想要的我留下了重复的部分请帮助
标签: plsql plsql-package