中易网

Oracle数据库单表自关联查询疑问

答案:4  悬赏:0  
解决时间 2021-02-27 12:25
User表:

列:user_code,user_name,related_code
数据:
1001 张三 1002
1002 李四 1001
1003 王五 1004
1004 赵六 1003
...
即用户A对用户B,反过来也对应,现在想要查出A对B的就OK,过滤掉B对A的数据,不知道描述的详细不详细,求解答,谢谢!

看来没描述清楚,自关联查询我知道。
上面是正常的查询数据,现在我只想要
1001 张三 1002

1003 王五 1004

这样的数据,因为1001跟1002关联,我就没必要再知道1002跟1001也是关联的,这是前提,求解答!!!T _ T
最佳答案
select user_code,user_name,related_code from tablename t left join tablename s on t.user_code=s.related_code;
根据你提供的测试数据,输出结果还是这样,不变。
------------------------------------------------------
通过你补充了问题说明,我分析了下,程序如下:
SQL> select * from re_a;

 USER_CODE USER_NAME                        RELATED_CODE
---------- -------------------------------- ------------
      1001 张三                                     1002
      1002 李四                                     1001
      1003 王五                                     1004
      1004 赵六                                     1003

SQL> select * from re_bak;

 USER_CODE USER_NAME                        RELATED_CODE
---------- -------------------------------- ------------

SQL> exec pro_relation_baidu;

1001张三1002
1003王五1004

PL/SQL procedure successfully completed

SQL>create or replace procedure pro_relation_baidu IS

CURSOR cur_rea IS SELECT * FROM re_a;
CURSOR cur_bak IS SELECt * FROM re_bak;
--v_rea re_a%ROWTYPE;
j NUMBER;
BEGIN
  DELETe re_bak;
  FOR i IN cur_rea LOOP
    SELECT COUNT(t.USER_CODE) INTO j FROM re_bak t WHERe
    t.USER_CODE=i.RELATED_CODE AND t.RELATED_CODE=i.USER_CODE;
    IF j=0 THEN
    INSERT INTO re_bak VALUES(i.USER_CODE,i.USER_NAME,i.RELATED_CODE);
    ELSE
      NULL;
    END IF;
  END LOOP;
  FOR i IN cur_bak LOOP
  dbms_output.put_line(i.USER_CODE||i.USER_NAME||i.RELATED_CODE);
  END LOOP;
end pro_relation_baidu;
全部回答
你提供的4张表都没有 page_name 这个字段。 我猜应该是在ip_page_url_t里吧? sql如下: select a.page_id,c.page_name,b.ope_id,b.ope_name,d.ope_group_name from ip_ope_page_t a, ip_ope_list_t b, ip_page_url_t c, ip_ope_group_t d where a.ope_id = b.ope_id and b.ope_group_id = d.ope_group_id and a.page_id = c.page_id
select a.* from user a left outer join user b on a.user_code=b.user_code;(不知道你此处的表主键是不是user_code) 是的那就是 on a.user_code=b.user_code; 如果是别的就把on 后面换成别的主键关联就行了。
你是想在查询的结果集中related_code列也显示用户的名字而不是ID? user_code为用户ID,user_name为用户姓名,related_code直接上级或说领导 查询结果中显示:用户ID,用户姓名,直接上级(其实也是用户姓名)。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我要买台式机 什么牌子好呀 戴尔 联想 惠普
游戏王中能召唤出四只小羊的卡叫什么
别拿大山雀不当好鸟,听听这红子口叫的哪差
剑三事件监控插件看不到BOSS范围圈
金达莱小镇韩国烤肉店地址有知道的么?有点事
a4l奥迪在市内跑电瓶没电了怎么回事?
有谁知道 ASTM A108对应中国牌号是什么吗
柳溪街在什么地方啊,我要过去处理事情
今年城门浚边村哪里位罡会拆迁开发∞
造梦西游3换赛尔号
请你用微粒的观点解释以下现象.妈妈在厨房里
如东县润捷建材有限公司这个地址在什么地方,
翠屏社区居委会(翠屏街)这个地址在什么地方,
请问澳大利亚 中国 比利时谁富?
桂林到南宁做火车大概要多久?桂林到南宁的快
推荐资讯
发动机冷却系的工作原理是什么?
防水博士怎么去啊,有知道地址的么
青岛火车站到啤酒街怎么坐车
如何将扫描的表格转化成word或者wps格式?现
如何知道我的笔记本支持哪种型号的内存条
请问湖南机械行业除了三一重工和中联重科还有
川妹鱼锅馆我想知道这个在什么地方
查看我的预约考试28号
五行缺金怎么办
松花粉美容方法
怀运三个月吃什么水果好?不可以吃什么水果
千年缘化妆品在什么地方啊,我要过去处理事情
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?