是否有可能删除这两个查询之间的联合以及如何创建此约束?

时间:2009-09-02 18:49:52

标签: sql-server-2005

你有这两张桌子:

table1
-------------
id
fromId
fromOtherTableId
person

Table2
-------------
OtherTableId    
Person

第一个问题

此查询工作正常

select t.id
from table1 as t inner join Table2 as a on t.fromOtherTableId=a.OtherTableId    
where a.Person = 54
union
select t1.id
from table1 as t1 inner join Table1 as t2 on t1.fromId=t2.fromId
where t2.Person = 54

如何删除联合以使查询仍然有效?


第二个问题

你如何管理你不能在table1中创建一个条目,其中table2.fromothertableid(person)将被放入table1.person(循环的东西)

同样的事实是你不能在table1中创建一个条目,其中table1.fromid(person)将被放入table1.person(循环的东西)

这样会很好:

table1
---------------
1, null, 1 , 100
2, 1, null , 200

table2
--------------
1, 200

这不会很好(介于**之间)

table1
---------------
1, null, 1 , 100
2, 1, null , 200
**3, 1, null , 100**
**4, null, 1, 200**

table2
--------------
1, 200

1 个答案:

答案 0 :(得分:0)

问题1:

select t.id
from table1 as t 
   join Table1 as a on a.fromId = t.fromId
   join Table2 as o on o.otherTableId = t.fromOtherTableId
where  54 In (a.Person, o.person)

Queston 2:我对这个架构有很多疑问......从表面上看它似乎不对,但我不知道它试图代表什么样的商业模式......你能详细说明吗?