多个关联表多字段多条件模糊查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多个关联表多字段多条件模糊查询相关的知识,希望对你有一定的参考价值。

有5个表,其中3个主表,2个关联表
主表和主要字段如下
表a:id,name,type
表b:id,name,size
表c:id,name
关联表如下
表ab:a_id,b_id
表ac:a_id,b_id

查询条件
a.name或b.name或c.name包含字符“ww”
且a.type=1
且b.size=2

结果集为满足条件的a表所有字段

参考技术A select distinct a.id,a.name,a.type from a a left join b b on a.id=c.id left join c on a.id=c.id where (a.name like '%ww%' or b.name like '%ww%' or c.name like '%ww%') and a.type=1 and b.size=2追问

a,b,c中并没有相同的字段,他们的关联关系是在ab,bc这两张表中的,这种情况如何处理呢?

追答

关联表如下
表ab:a_id,b_id
表ac:a_id,b_id
其中表ac:a_id,b_id怎么还有这种关联,c表就一个id字段总要和一个表的字段关联吧, 你写一个a_id,b_id是什么意思,还是你想说的是,a表和b表关联后,再跟据ab表的结果集用a.id,a.name去关联c.id,c.name

追问

写错了。。。是表ac:a_id,c_id,意思是表ac存储a和c的关联关系

追答

不好意思实在是没有搞明白你说的表关联关系是什么样的,难道不是a.id=b.id和a.id=c.id吗,如果他们都没有关联关系肯定没有办法连接,总要有字段是有关系的,这样不行吗
select distinct a.id,a.name,a.type from a a left join b b on a.id=b.id left join c c on a.id=c.id where (a.name like '%ww%' or b.name like '%ww%' or c.name like '%ww%') and a.type=1 and b.size=2

本回答被提问者采纳
参考技术B select a.id,a.mame,a.type
from a left join b on a.id=b.id
left join c on a.id=c.id where a.type=1 and b.size=2
and (a.name like '%ww%' or b.name like '%ww%' or c.name like '%ww%' )
参考技术C select a.id,a.mame,a.type
from a left join b on a.id=b.id left join c on a.id=c.id where a.type=1
and b.size=2
and(a.name='ww' or b.name='ww' or c.name='ww' )
参考技术D SELECT * from table1 t1,table2 t2,table3 t3 where t1.name = t2.name AND t2.no = t3.no and t3.num = t1.num AND t1.age = 1 AND t1.productName LIKE '%111%' AND t2.productName like '%222%';

第5个回答  2016-01-25

    具体逻辑具体分析


mysql搜索多表多字段模糊查询

select parttime_job_business_assessments.*, u.nick_name, u.mobile, pj.name as job_name, b.name as business_name from `parttime_job_business_assessments`
left join `users` as `u` on `u`.`id` = `parttime_job_business_assessments`.`user_id`
left join `parttime_jobs` as `pj` on `pj`.`id` = `parttime_job_business_assessments`.`job_id`
left join `businesses` as `b` on `b`.`id` = `parttime_job_business_assessments`.`business_id`
where 1 = 1
AND concat(pj.`name`, u.`nick_name`,u.`mobile`,b.`name`) LIKE "%郝%"
order by `parttime_job_business_assessments`.`sort_id` desc
limit 10 offset 0
————————————————
版权声明:本文为CSDN博主「Yietion」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010496966/article/details/83818268


当搜索某一关键词的时候,要查询多个表的字段是否包含该关键字,这个时候可以使用:

concat(表1.字段1, 表二.字段二......) LIKE "%关键词%"
上例为查询“郝“关键词,可以是users表的nick_name和mobile字段,也可以是parttime_jobs表的name字段,同时还可以是businesses的name字段
————————————————
版权声明:本文为CSDN博主「Yietion」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010496966/article/details/83818268

以上是关于多个关联表多字段多条件模糊查询的主要内容,如果未能解决你的问题,请参考以下文章

怎么用linq to sql 写单表多字段的模糊查询方法

mongodb 怎么对多个字段模糊查询

简单实现mysql多字段模糊查询

mysql模糊查询千万数据

如何对ORACLE里的CLOB字段进行模糊查询?

SQL多个条件模糊查询问题。。。