可以啊,完全可以。
A表中建立两个外键,分别是 f1->C1和f2-C1。
没有任何问题。

解决方案 »

  1.   

    left inner join
    left outer join
    right inner join
    right outer join
      

  2.   

    select * from A inner join B on A.f1=B.c1 or A.f2=B.c1
    不过这样的表设计应该是有问题的。
      

  3.   

    已经解决!
    这样写就可以了
    select B.c2, D.c2, A.f3 from (( A inner join B on A.f1=B.c1)inner join B as D on  A.f2=D.c1).A表中建立两个外键,分别是 f1->C1和f2-C1。
    这样的话,SELECT语句就只能这样写:B.c2, B.c2,虽然我再f1,f2中保存了不同的值来指向B中的两条记录,但实际得到的检索结果一样的。select * from A inner join B on A.f1=B.c1 or A.f2=B.c1
    如果用OR的话,这样会出来很多条结果!而实际上我要检索的知识一条。只是这一条记录中的两个值从同一个表中取得而已。
    这样设计数据库是为了将一个树形的数据用一张表表示。因为客户要求有一个类别的数据是可以由用户随意增加子类的。
    结贴!