首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

一表两外键引述同一主键表,T-SQL请大神简化

2013-09-06 
一表两外键引用同一主键表,T-SQL请大神简化今天考试遇到这个情况以前从来没想过这个问题:一个表中两列同时

一表两外键引用同一主键表,T-SQL请大神简化
今天考试遇到这个情况以前从来没想过这个问题:
    一个表中两列同时引用 同一个主键表,查询T-SQL不会写了
关系图:
一表两外键引述同一主键表,T-SQL请大神简化

这是我能想到的办法:
一表两外键引述同一主键表,T-SQL请大神简化

总感觉怪怪的,百度谷歌都找不到想要的答案。。。


B表两列(Id1,Id2)同时引用A表主键


SELECT   TOP (200) B.[Identity], A.Name, A_1.Name AS Expr1
FROM      B INNER JOIN
                A ON B.Id2 = A.Id INNER JOIN
                A AS A_1 ON B.Id1 = A_1.Id


先感谢各位大神帮忙了! 两外键引用同一主键 SQL
[解决办法]
SELECT * FROM b JOIN A a ON a.Id = b.Id1
JOIN A a2 ON a2.Id = b.Id2
已经差不多了吧
[解决办法]
try this,

select top (200) 
      B.[Identity],
      (select top 1 a1.Name from A a1 where a1.Id=B.Id2) 'Name',
      (select top 1 a2.Name from A a2 where a2.Id=B.Id1) 'Expr1'
from B

[解决办法]
select a.*,b.Name,c.Name as Name1 from A as a inner join B as b on a.id1=b.id inner join B as c on a.id2=c.id
[解决办法]
select * from a,b where a.id=b.id1 or a.id=b.id2 或者
select * from a,b where a.id=b.id1 and a.id=b.id2
具体的要看你的实际需求。
[解决办法]
引用:

SELECT * FROM b JOIN A a ON a.Id = b.Id1
JOIN A a2 ON a2.Id = b.Id2
已经差不多了吧


个人支持两次内连接   当然四楼的也可以
[解决办法]
这样的表设计很正常,比如业务表经常有创建人,修改人,那么它就要连接到员工表两次.

select a.*,b.name as create_name,c.name as edit_name
from tb a
left join tbEmployee b inner join a.id1=b.id
left join tbEmployee c inner join a.id2=c.id

[解决办法]
引用:
Quote: 引用:

SELECT * FROM b JOIN A a ON a.Id = b.Id1
JOIN A a2 ON a2.Id = b.Id2
已经差不多了吧

但是感觉这样做有点欠妥,不知道为什么


有什么欠妥?应该把join 改为left join吧
SELECT * 
FROM b 
LEFT JOIN A a ON a.Id = b.Id1
LEFT JOIN A a2 ON a2.Id = b.Id2

热点排行