小弟目前有一表,需要体现好友关系,
规则如下举例:
有3(N)个用户,每个用户都与其他2(N-1)位用户为好友关系,
生成表为
ID    user    userfriend
1     u1      u2
2     u1      u3
3     u2      u1
4     u2      u3
5     u3      u1
6     u3      u2
这样的表可不可以通过存储过程或是什么办法批量插入?
如果N是100,那要插9900条数据,岂不是累死。小弟初级入门,望有大侠指点。

解决方案 »

  1.   

    SQL> create table tt (name varchar2(10));表已创建。
    SQL> insert into tt values('u1');已创建 1 行。SQL> insert into tt values('u2');已创建 1 行。SQL> insert into tt values('u3');已创建 1 行。SQL> commit;提交完成。SQL> select * from tt;NAME
    ----------
    u1
    u2
    u3SQL> create table t_t as select * from tt;表已创建。
    SQL> create table tttt as select rownum id,tt.name "user",t_t.name userfriend fro
    m tt,t_t where tt.name<>t_t.name;表已创建。SQL> select * from tttt;        ID USER      USERFRIEND
    ---------- ---------- ----------
             1 u1         u2
             2 u1         u3
             3 u2         u1
             4 u2         u3
             5 u3         u1
             6 u3         u2已选择6行。
    算是 笛卡尔积了。。
      

  2.   

    你都知道某人跟其它所有人都有关系,我觉得连朋友关系表都省了,只要保存姓名就足够了。^_^
    确实一个表就行了。drop table 关系表;create table 关系表 (姓名 varchar(10), 朋友 varchar(10));insert into 关系表
    with a as (
        select '才子' || to_char(rownum) as 姓名
        from dual
        connect by rownum <= 5
    )
    select a.姓名, b.姓名 as 朋友
    from a
    join a b on a.姓名 <> b.姓名
    order by a.姓名, b.姓名
    ;select * from 关系表;