学生表t1:id,name
好友表t2:id,fidselect a.name,b.name
from t1 a
left outer join 
(select c.id,d.name from t2 c
left outer join t1 d on c.fid=d.id
) b on a.id=b.id
where a.id=1

解决方案 »

  1.   

    谢谢; newly_ignorant
    我也是这样设计的
    学生表
    id name
    1  张三
    2  李四
    3  王五
    4  赵六
    5  钱七
    6  胡风好友表 
    id fid
    1  5
    1  6
    根据id,把好友的id加入好友表中
    这样根据表一的id便可在表二中找出对应的好友,
    select id fid from table2 where id = :a_id (a_id是表一的id)
    比如根据表一的张三,可以从表二得到张三的好友fid为5和6,但是根据5
    确没法得到关连的1和6,也就是这样设计不能根据id为5的胡风得到其对应的
    好友,请教该怎么设计?
      

  2.   

    张三的好友在表二两条记录
    同时胡风也有N条记录
    也就是存在记录
    1 5
    以及
    5 1要想不出现这种情况
    好友表可以这么设计
    id1,id2
    但是查询相对麻烦select a.name,b.name
    from t1 a
    left outer join 
    (select c.id,d.name from t2 c
    left outer join t1 d on c.id1=d.id or c.id2=d.id
    ) b on a.id=b.id
    where a.id=1
      

  3.   

    谢谢newly_ignorant(不学无术) ,我先试试,待会揭帖.
    其他高手有另外办法也请帮忙.谢谢...国庆快乐!