两个表。
第一个 班级表
有:编号,届号,班级名称
1,2008,初二(1)
2,2008,初二(2)
3,2009,初三(1)
4,2009,初三(2)
等等第二个表 教师表
有:编号,教师名,所教班级
1,林路,1|2|6
2,陈硕,3|4|
等等
求:2008届教师名单?sql能直接查询吗?在线等,谢谢
第一个 班级表
有:编号,届号,班级名称
1,2008,初二(1)
2,2008,初二(2)
3,2009,初三(1)
4,2009,初三(2)
等等第二个表 教师表
有:编号,教师名,所教班级
1,林路,1|2|6
2,陈硕,3|4|
等等
求:2008届教师名单?sql能直接查询吗?在线等,谢谢
from 教师表 a,班级表 b
where b.届号 = '2008'
and charindex('|'+a.编号+'|','|'+b.所教班级+'|')>0
select 教师名
from 教师表 a,班级表 b
where b.届号 = '2008'
and charindex('|'+b.编号+'|','|'+a.所教班级+'|')>0 写错一个缩写
FROM 班级表 AS C, 教师表 AS T
WHERE 届号='2008' AND CHARINDEX('|'+RTRIM(C.编号)+'|', '|'+所教班级+'|')>0
--如果班级表中的班级名称和教师表中的所教班级对应,不考虑年级。这样:。
--> 测试数据: [班级表]
if object_id('[班级表]') is not null drop table [班级表]
create table [班级表] (编号 int,届号 int,班级名称 varchar(7))
insert into [班级表]
select 1,2008,'初二(1)' union all
select 2,2008,'初二(2)' union all
select 3,2009,'初三(1)' union all
select 4,2009,'初三(2)'
--> 测试数据: [教师表]
if object_id('[教师表]') is not null drop table [教师表]
create table [教师表] (编号 int,教师名 varchar(4),所教班级 varchar(10))
insert into [教师表]
select 1,'林路','1|2|6' union all
select 2,'陈硕','3|4'select distinct 教师名 from 教师表 a,班级表 b where 届号=2008 and
charindex('|'+ltrim(substring(班级名称,patindex('%[0-9]%',班级名称),charindex(')',班级名称)-patindex('%[0-9]%',班级名称)))+'|',
'|'+所教班级+'|')>0
--结果:
教师名
----
林路
insert into [班级表]
select 1,2008,'初二(1)' union all
select 2,2008,'初二(2)' union all
select 3,2009,'初三(1)' union all
select 4,2009,'初三(2)'
create table [教师表] (编号 int,教师名 varchar(4),所教班级 varchar(10))
insert into [教师表]
select 1,'林路','1|2|6' union all
select 2,'陈硕','3|4'select distinct m.教师名
from 班级表 n ,教师表 m
where n.届号 = 2008 and charindex('|' + cast(n.编号 as varchar) + '|' , '|' + m.所教班级 + '|') > 0drop table 班级表 ,教师表/*
教师名
----
林路(所影响的行数为 1 行)
*/
select distinct [教师名] from [班级表] c,[教师表] t
where c.[届号]=2008 and patindex('%'+convert(varchar,c.[编号])+'%',t.[所教班级])>0