现在有三个表(公司信息表,公司名称变更表,合同表)
表的结构依次为,其中(公司信息表--公司名称变更表有联系,公司名称变更表-合同表有联系) 编号 公司名称
1 中国石油
2 中国电信
编号 外键 变更后的名称
1 1 中国石化
2 1 北京石油
3 1 中国石油石化 编号 公司名称 合同号 外键
1 中国石化 10004 1
2 北京石油 10006 2
3 中国石油石化 10078 3
4 北京石油 20067 1现在要求的查询结果:
输入任何一个公司变更名称,我都能找到和这个公司相关的合同,不管是公司变更前还是变更后的,例如:
输入北京石油或中国石油石化,结果是
1 中国石化 10004 1
2 北京石油 10006 2
3 中国石油石化 10078 3
4 北京石油 20067 1因为签合同是用的变更后的公司名,但是公司名没有变更前签的合同,也应该能查出来,因为公司地址没有发生变化
表的结构依次为,其中(公司信息表--公司名称变更表有联系,公司名称变更表-合同表有联系) 编号 公司名称
1 中国石油
2 中国电信
编号 外键 变更后的名称
1 1 中国石化
2 1 北京石油
3 1 中国石油石化 编号 公司名称 合同号 外键
1 中国石化 10004 1
2 北京石油 10006 2
3 中国石油石化 10078 3
4 北京石油 20067 1现在要求的查询结果:
输入任何一个公司变更名称,我都能找到和这个公司相关的合同,不管是公司变更前还是变更后的,例如:
输入北京石油或中国石油石化,结果是
1 中国石化 10004 1
2 北京石油 10006 2
3 中国石油石化 10078 3
4 北京石油 20067 1因为签合同是用的变更后的公司名,但是公司名没有变更前签的合同,也应该能查出来,因为公司地址没有发生变化
解决方案 »
- 关于数据库被注入C.JS那个病毒
- Google、yahoo、baidu这样的搜索引擎提供商是通过什么"数据库"进行操作的
- 伺服器: 訊息 8908,層級 22,狀態 6,行 1.Table error: Database ID 20, object ID 1735065317, index ID 2. Chain linkage mismatch.
- SQL2000向表格中传入数据的问题
- 能解释一下这个简单的INSERT触发器吗?
- SQL正在挂起更改
- 查语法特别是from后面那些变量的引用正不正确
- 能不能修改链接服务器的数据源或者其他某个属性?十万火急!
- ******奇怪存储过程---参数输入&临时表*******救命啊~~~~~~~~~
- mysql三表查询
- sql server 无法建立作业
- sql 2005和sql 2008R2同时安装在同一电脑上
declare @t1 table(编号 int,公司名称 varchar(20))
insert @t1
select 1, '中国石油' union all
select 2, '中国电信'
declare @t2 table(编号 int,外键 int,变更后的名称 varchar(20))
insert @t2
select 1, 1, '中国石化' union all
select 2, 1, '北京石油' union all
select 3, 1, '中国石油石化'
declare @t3 table(编号 int,公司名称 varchar(20),合同号 varchar(10),外键 int)
insert @t3
select 1, '中国石化', '10004', 1 union all
select 2, '北京石油', '10006', 2 union all
select 3, '中国石油石化', '10078', 3 union all
select 4, '北京石油', '20067', 1----查询
declare @name varchar(20)
set @name = '北京石油'
SELECT c.* FROM @t1 as a
INNER JOIN @t2 as b on a.编号 = b.外键
INNER JOIN @t3 as c on b.编号 = c.外键
WHERE a.公司名称 = @name OR a.编号 = (select 外键 from @t2 where 变更后的名称 = @name)
ORDER BY c.编号
/*结果编号 公司名称 合同号 外键
----------- -------------------- ---------- -----------
1 中国石化 10004 1
2 北京石油 10006 2
3 中国石油石化 10078 3
4 北京石油 20067 1
*/
我把数据写完后,一个输入法切换SQL死机了,郁闷
我觉得 楼主的合同表的外键是多余的INNER JOIN @t3 as c on b.公司名称 = c.公司名称