我有两个名为companies 和jobs 的表。它们是相关的 - jobs 表有一个外键 company_id。
公司表列有:公司名称、城市、省份等
jobs 表列:标题、部门、描述等
我想在这些列中搜索两个表,如果关键字在 jobs 表中有匹配项,则从 company 表中获取相关数据,如果匹配项是在 company 表中,我想获取与公司相关的所有工作。
据我所知,为了在两个表中进行搜索,我必须使用 UNION,这是有效的:
$sql= "(SELECT title, department FROM jobs WHERE title LIKE ? )
UNION
(SELECT companyname,city FROM companies WHERE companyname LIKE ?)";
我不知道如何根据匹配从另一个表中获取相关数据。是否可以使用 JOIN 进行一次调用?
谢谢。
最佳答案
使用JOIN
和OR
条件:
SELECT jobs.title, jobs.department,
companies.companyname, companies.city
FROM jobs
JOIN companies ON companies.id = jobs.company_id
WHERE (jobs.title LIKE ? OR companies.companyname LIKE ?)
使用UNION
:
SELECT jobs.title, jobs.department,
companies.companyname, companies.city
FROM jobs
JOIN companies ON companies.id = jobs.company_id
WHERE jobs.title LIKE ?
UNION
SELECT jobs.title, jobs.department,
companies.companyname, companies.city
FROM jobs
JOIN companies ON companies.id = jobs.company_id
WHERE companies.companyname LIKE ?
关于php - 在两个表中搜索并使用 PDO 合并结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37802438/