从多个表中获取不同的行

时间:2013-01-13 14:50:42

标签: 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)//userid from users(id) 
每个用户在profile_pic中的

只有一张图片; 在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)

2 个答案:

答案 0 :(得分:0)

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

and  edu.school LIKE '%' and emp.employeer LIKE '%';

更新1

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

答案 1 :(得分:0)

如果要搜索值{{}>在尝试搜索带有谓词{{​​1}}的保留通配符时,必须使用ESCAPE关键字来指定转义字符{1}},使用:

LIKE

而不只是:

%