求一个模糊查询的SQL
tableA tableB tablcC
A_id A_name A_id C_id C_id C_name
1 A 1 1 1 C1
1 2 2 C2
tableB是tableA与tableC的关联表。
要求根据提供的A_name 或者 C_name 或者两者都有,给出一个A_id 的查询结果。
比如: A_name like %A% and C_name like %C1%
这个查询SQL怎么写啊?
------解决方案--------------------set nocount on
---创建表
create table tableA(A_id int,A_name varchar(20))
create table tableB(A_id int,C_id int)
create table tableC(C_id int,C_name varchar(20))
---插入数据
insert into tableA select 1, 'A '
union select 2, 'A1 '
insert into tableB select 1,1
union select 1,2
insert into tableC select 1, 'C1 '
union select 2, 'C2 '
set nocount off
---查询
declare @a varchar(20)
declare @c varchar(20)
set @a= 'A '
set @c= 'c '
select distinct tableA.A_id from tableA left join tableB on tableA.A_Id=tableB.A_id left join tableC on tableB.C_id=tableC.C_id
where (@a is null or @a= ' ' or A_name like '% '+@a+ '% ') and (@c is null or @c= ' ' or C_name like '% '+@c+ '% ')
---删除表
drop table tableA
drop table tableB
drop table tableC
------解决方案--------------------select a.A_name, c.C_name from tableA a
left join tableB b on a.A_id = b.A_id
left join tableC c on b.C_id = c.C_id
where a.A_name like '%A% ' and c.C_name like '%C1 '