Php 如何用一个输入从两个不同的表中获取结果

Php 如何用一个输入从两个不同的表中获取结果,php,mysql,mysqli,Php,Mysql,Mysqli,我有两个具有不同列名的不同表 表1用户 +-----+----------+---------+---------+------------+ | id | name | username| image | email | +-----+----------+---------+---------+------------+ | 1 | John1 | exmple1 | img1 |a@gmail.com | | 2 | John2 | exm

我有两个具有不同列名的不同表

表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
,则应运行一个查询,该查询将检查users表和company表中的john&如果存在用户名john&如果存在名为john的公司,则应同时获取结果

如何实现这一点,我尝试在查询中使用UNION,但它说列是不同的

目前这是我的查询

$go = mysqli_query($connecDB, "SELECT name, img,username FROM users WHERE name LIKE '$q%' LIMIT 0,10");
现在人们可能在想我到底想要什么! 我想要一个单独的查询来检查这两个表中的输入并获取它们的详细信息

您可以使用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
你可以用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


两个表之间是否存在任何关系?@Sudnep no没有关系从用户u、公司c中选择*,其中u.username=c.username和c.username=“some user name”或。。选择*从用户u加入公司c在u.username=c.username和c.username=“something”您可以在这种情况下使用UNION ALL两个表之间是否有任何关系?@Sudnep否没有关系选择*从用户u,公司c,其中u.username=c.username和c.username=“some user name”或。。选择*从用户u加入公司c on u.username=c.username和c.username=“something”在这种情况下,您可以使用UNION ALL。我已经在我的帖子中写道,我尝试了UNION,但它不起作用,因为公司表列是不同的&它们彼此不相关。您可以轻松地扩展列,以确保它们在形式上相等。我已经用扩展列更新了答案。对于UNION,您的查询工作了,但只带来了一个结果,但在我的数据库中有3个结果。勾选图像中的此处,firts select和second select有两个不同的名称。'对于正确的工作,“aniket”和“eclercx”应该是相同的。。,无论如何,我已经用union alli更新了答案。我已经在我的帖子中写道,我尝试了union,但它不起作用,因为公司表列不同&它们彼此不相关。您可以轻松地扩展列,以确保它们在形式上相等。我已经用扩展列更新了答案。对于union,您的查询有效,但仅带来了一个结果,但在我的数据库中有3个结果。勾选图像中的此处,firts select和second select有两个不同的名称。'aniket'和'eclercx'对于正确的工作应该是相同的。无论如何,我已经用union all更新了答案