Mysql 从多个表中提取距离行

Mysql 从多个表中提取距离行,mysql,Mysql,我想在我的网站中包含搜索功能 我想允许基于用户名、城市、学院/学校名称、员工进行搜索。 名称为必填字段,其他字段为可选字段。 我有以下几张桌子 users(id,fname,lname,city) profile_pic(id,pic,userid)//userid from users(id) educationdetail(eduid,school,userid)//userid from users(id) employment(empid.employeer,userid)//use

我想在我的网站中包含搜索功能

我想允许基于用户名、城市、学院/学校名称、员工进行搜索。 名称为必填字段,其他字段为可选字段。 我有以下几张桌子

users(id,fname,lname,city)
profile_pic(id,pic,userid)//userid from users(id) 
educationdetail(eduid,school,userid)//userid from users(id) 
employment(empid.employeer,userid)//userid from users(id) 
在配置文件中,每个用户只有一张图片; 在educationdetail中,用户可以添加多个学校学院详细信息 在就业中,用户可以添加多个工作详细信息

出于搜索目的,我使用以下查询:

    SELECT distinct s.id, s.fname, s.lname,pr.pic
     FROM users as s LEFT JOIN profile_pic as pr 
     on s.id = pr.userid
     LEFT JOIN educationdetail as edu
     on s.id=edu.userid
     LEFT JOIN  employment as emp
     on s.id=emp.userid
     where s.fname like '%m%' and s.lname like '%%%' and s.city like '%%%'
这就是提供适当的细节

但当包含少量参数时,它不会显示任何结果

     SELECT distinct s.id, s.fname, s.lname,pr.pic
     FROM users as s LEFT JOIN profile_pic as pr 
     on s.id = pr.userid
     LEFT JOIN educationdetail as edu
     on s.id=edu.userid
     LEFT JOIN  employment as emp
     on s.id=emp.userid
     where s.fname like '%m%' and s.lname like '%%%' and s.city like '%%%'
     and  edu.school='%%%' and emp.employeer='%%%';
显示

Empty set (0.00 sec)

也许您可以使用
,然后在搜索模式时使用
类似的
而不是
=

and  edu.school LIKE '%' and emp.employeer LIKE '%';
更新1

它不返回任何值的原因是,查询正在搜索字段
edu.school
中不存在的
%%
的值。

在本例中,当尝试使用谓词
LIKE
搜索保留通配符时,必须使用关键字指定转义字符,如果要搜索值
%
,请使用:

WHERE name LIKE '%|%%' ESCAPE '|' -- Or any escape character.
而不仅仅是:

WHERE name LIKE '%%%'

你说像“%”这样的
是什么意思?“%pattern%”这里“%%”指的是任何你是正确的模式,但现在像“%”这样的edu.school和“%”这样的emp.employeer都没有显示结果你试图搜索的值是什么?像“%man%”这样的s.fname和“%”这样的其余都是“%”它没有获取数据,而是显示了问题中提到的一个查询所有相关数据是否是因为没有为其他用户存储教育和就业详细信息?其中s.fname类似于“%m%”,s.lname类似于“%%”,s.city类似于“%%”,或者(edu.school类似于“%”,或者emp.employeer类似于“%”)