求助:一个表引用了两次另一个表的主键,如何查询另一个表中的数据?

比如,我有这样一个表:
Table1(t1 int primary key, Name nvarchar(10))

还有这样一个表,引用了两次Table1.t1:
Table2(
  t2 int primary key, 
  t1-1 int foreign key references Table1.t1, 
  someEvent nvarchar(20), 
  t1-2 int foreign key references Table1.t1)

现在要查询出类似这样的结果:
(t2, t1-1的Name, someEvent, t1-2的Name)

该怎么写SQL呢?谢谢!

作者: chen2qu   发布时间: 2011-06-15

SQL code
select a.t2,b.name,a.someEvent,c.name 
from table2 a inner join table1 b on a.[t1-1]=b.t1
inner join table1 c on a.[t1-2]=c.t1


注意主外键关系与查询中的连接不是一回事.
主外键关系是用来规范表数据的完整性的,而连接是通过相等关系来进行查找的.

作者: qianjin036a   发布时间: 2011-06-15

select table2.t2,table1.name,someevent,table1.name from table2 left join table1 on table2.t1-1 = table1.t1

还有 你同一个表中两个外健怎么会一样呢?

作者: aspwebchh   发布时间: 2011-06-15

引用 1 楼 qianjin036a 的回复:
SQL code
select a.t2,b.name,a.someEvent,c.name
from table2 a inner join table1 b on a.[t1-1]=b.t1
inner join table1 c on a.[t1-2]=c.t1


注意主外键关系与查询中的连接不是一回事.
主外键关系是用来规范表数据的完整性的,而连接是通过相等关系来进行查找……


谢谢,我这就去试试!
我原来是这么写的,有语法错误:
select a.t2,b.name,a.someEvent,c.name 
from table2  
inner join table1 as b on table2.[t1-1]=b.t1
inner join table1 as c on table2.[t1-2]=c.t1

作者: chen2qu   发布时间: 2011-06-15

引用 2 楼 aspwebchh 的回复:
select table2.t2,table1.name,someevent,table1.name from table2 left join table1 on table2.t1-1 = table1.t1

还有 你同一个表中两个外健怎么会一样呢?


是这样的,第一个表,是用户表,第二个表,是事件处理表,需要记录处理人和下一步处理人,这两个都需要引用到用户表。

作者: chen2qu   发布时间: 2011-06-15