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

遇到一个难题,同一字段需要关联两个不同基础表,不知道怎么办

2012-04-23 
遇到一个难题,同一字段需要关联两个不同基础表,不知道怎么处理。表一、客户表1ID1name1表二、客户表2id2name2

遇到一个难题,同一字段需要关联两个不同基础表,不知道怎么处理。
表一、客户表1
ID1 name1
表二、客户表2
id2 name2

表三、进货单资料表
ID cust_1d date

需求:
1、表一和表二属性很不一样,不希望合并在一起。
2、进货单资料表的cust_Id同时关联ID1,ID2,关联之后显示中文名称。要求可以显示一个进货的列表供查询。
3、表三不想拆成2个表。
4、表一和表二完全不同,没有关系,不能建立视图。

请问可以实现吗?或者有其他的办法?我还几年没来,不知道有没有分给,哪位大侠有空路过帮我看看。






[解决办法]

SQL code
--好像没什么好方法可以处理 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) bon a.cust_1d=b.id
[解决办法]
表3中加字段不一定非要把两个字段ID1和ID2都加上去,可以加个标识位,用于表示是表1还是表2
如,表3
ID,TableID,TableFlag,Date
其中TableFlag为1表示表1,2表示表2
连接时
SQL code
SELECT * FROM 表1,表2,表3 WHERE TableId = CASE TableFlage WHEN 1 THEN 表1.Id                                                             WHEN 2 THEN 表2.Id END 

热点排行
Bad Request.