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类似于“%”)