日期:2014-05-18 浏览次数:20583 次
--好像没什么好方法可以处理 id1 和id2 相同的情况。除非在 表三中加标识性字段 create table tb1(id1 int,name1 nvarchar(32)) insert into tb1 select 1,N'的是法师法' create table tb2(id2 int,name2 nvarchar(32)) insert into tb2 select 1,N'阿斯顿' insert into tb2 select 2,N'卢卡斯进的' create table tb3(id int,cust_1d int,date datetime) insert into tb3 select 1,1,GETDATE() insert into tb3 select 2,1,GETDATE() insert into tb3 select 3,2,GETDATE() --除非这样 select distinct cust_1d,name from tb3 a join (select id1 as id,name1 as name from tb1 union all select id2 as id,name2 as name from tb2) b on a.cust_1d=b.id
------解决方案--------------------
表3中加字段不一定非要把两个字段ID1和ID2都加上去,可以加个标识位,用于表示是表1还是表2
如,表3
ID,TableID,TableFlag,Date
其中TableFlag为1表示表1,2表示表2
连接时
SELECT * FROM 表1,表2,表3 WHERE TableId = CASE TableFlage WHEN 1 THEN 表1.Id WHEN 2 THEN 表2.Id END