搜索框 - >我需要从一个表中连接名字和姓氏,然后将它连接到第二个表格并从第二个表格返回项目

时间:2013-08-15 21:41:42

标签: mysql

所以搜索就像'Ozzie Smith'

第一张表有(用户名,fname,lname)= osmith,ozzie,smith

第二个表有(用户名,团队)= osmith,cardinals

我需要连接第一个表中的名字和姓氏列,然后在第二个表上按用户名加入,并返回团队名称。

我一直在努力尝试......大脑融化了。我需要你的帮助!

谢谢!

3 个答案:

答案 0 :(得分:2)

由于它是MySQL,因此您需要使用CONCAT,而不是+符号。我还添加了LOWER()函数以避免大写字母不匹配问题:

select team
from table1
join table2 on table2.username = table1.username
where lower(concat(fname,' ',lname)) like lower('%Ozzie Smith%')

答案 1 :(得分:1)

你可能正在做类似

的事情
WHERE fname LIKE '%Ozzie Smith%'

哪个不行。 fname仅包含Ozzie,永远不会与Ozzie Smith匹配。如果用户输入Smith, Ozzie或任何其他双名变体,它也不匹配。您必须预处理搜索字词并执行类似

的操作
WHERE (fname LIKE '%Ozzie%') or (fname LIKE '%Smith%')
   OR (lname LIKE '%ozzie%') or (lname LIKE %Smith%')

随着搜索条件和搜索字段数量的增加,这将非常痛苦。你最好使用FULLTEXT索引,这将是一个简单的问题

WHERE MATCH(fname, lname) AGAINST ('Ozzie Smith')

答案 2 :(得分:0)

为什么这不起作用?

select
  lname + ', ' + fname as playerName
  , team as teamName
from table1
join table2 on table2.username = table1.username

更新

where (fname + ' ' + lname) like '%Ozzie Smith%'