如何通过一个输入从两个不同的表中获得结果

时间:2016-06-10 18:52:55

标签: php mysql mysqli

我有两个不同的列名

的不同表

表1用户

+-----+----------+---------+---------+------------+
|  id |   name   | username| image   |   email    |
+-----+----------+---------+---------+------------+
|  1  |  John1   | exmple1 |  img1   |a@gmail.com |
|  2  |  John2   | exmple2 |  img2   |b@gmail.com |
|  3  |  John3   | exmple3 |  img3   |c@gmail.com |
|  4  |  John4   | exmple4 |  img4   |d@gmail.com |
+-----+----------+---------+---------+------------+

表2公司

+-----+----------+------------+---------=------+-----------+
|  id |company_name | username|  description   |   founded |
+-----+-------------+---------+----------------+-----------|
|  1  |    john1    | exmple1 |description1    |    2016   |
|  2  |CompanyName2 | exmple2 |description2    |    2016   |
|  3  |CompanyName3 | exmple3 |description3    |    2016   |
|  4  |CompanyName4 | exmple4 |description4    |    2016   |
+-----+-------------+---------+---------=------+-----------+

现在,只要用户在搜索栏中输入任何输入,就会向php文件发出ajax请求,该文件会检查数据库中是否存在该用户名

因此,例如,如果用户输入了输入john,则应运行一个查询,该查询将检查用户表和公司表中的john&如果有用户名john&如果有一家名为john的公司,它应该同时获取结果。

我怎样才能实现这一点,我尝试在我的查询中使用UNION,但它表示列不同

目前这是我的查询

$go = mysqli_query($connecDB, "SELECT name, img,username FROM users WHERE name LIKE '$q%' LIMIT 0,10");

现在人们可能会想到我真正想要的东西! 我想要一个单一的查询来检查表格和表格中的输入获取他们的详细信息

1 个答案:

答案 0 :(得分:0)

您可以使用union

select  id,  name  ,username, image, email, null, null
from users
where name LIKE concat('$q', '%')
union all
select  id,  company_name as name  ,username, null, null, description, founded 
from Company 
where name LIKE concat('$q, '%')
order by name limit 10