在一个查询MYSQL中搜索2个表

时间:2012-03-13 17:45:54

标签: php mysql

我正在学习mysql,所以我对此很新,试图在其他地方找到解决方案,但也无法解决。

我有2个表,import_staff和import_student。

  • import_staff表有3列,id,stafffirstname和stafflastname
  • import_student还有3列,id,studentfirstname和studentlastname

我有一个表单,允许用户按姓名搜索员工用户或学生用户。

我可以通过这样的表搜索我的查询:

SELECT * FROM import_staff WHERE CONCAT(stafffirstname,space(1),stafflastname) LIKE '%$queryString%' LIMIT 10

但我希望查询能够在两个表中进行搜索..不确定如何开始。任何想法都表示赞赏。感谢。

BTW-使用PHP。

4 个答案:

答案 0 :(得分:1)

您可以使用UNION

执行此操作
SELECT id, stafffirstname AS name1, stafflastname AS name2 FROM import_staff WHERE CONCAT(stafffirstname,space(1),stafflastname) LIKE '%$queryString%' LIMIT 10
UNION ALL
SELECT id, studentfirstname AS name1, studentlastname AS name2 FROM import_student WHERE CONCAT(studentfirstname,space(1),studentlastname) LIKE '%$queryString%' LIMIT 10

答案 1 :(得分:0)

你也可以加入

SELECT *
FROM import_staff
INNER JOIN import_student
ON 1 = 1

答案 2 :(得分:0)

SELECT  t1.stafffirstname, t1.stafflastname, t2.studentfirstname, t2.studentlastname,
FROM import_staff t1, import_student t2
WHERE CONCAT(t1.stafffirstname,space(1),t2.stafflastname) LIKE '%$queryString%' LIMIT 10

这可能适合你。

答案 3 :(得分:0)

select * from (
    select id, stafffirstname as firstname, stafflastname as lastname  from import_staff
    union
    select id, studentfirstname as firstname, studentlastname as lastname  from import_student) t
where concat_ws(' ',firstname,lastname) like '%term%'

在您的表定义中,您应该只使用姓氏,而不是studentlastname等。表名称import_staff和import_student已经提供了命名空间。