0

我有一张桌子vacancy,看起来像这样

在此处输入图像描述

role company location每个人都有自己的表,但我想一起查询以从其他表中提取信息以填写vacancy

我试过了

SELECT  r.title, c.company, l.town, l.country, v.term
FROM role r, vacancy v, location l, company c

但这给了我 300 行相同的结果title,而实际上我应该返回 3 行。

公司 公司

角色 角色

地点 地点

4

2 回答 2

2

您可以使用连接来显示所有四个表中的数据

SELECT v.id, r.title, c.company, l.town, l.country, v.term
FROM  vacancy v
JOIN  location l ON (v.location = l.id)
JOIN   company c ON (v.company = c.id)
JOIN  role r ON (v.role = r.id)
于 2013-08-26T08:12:16.053 回答
0

Beardy,MySQL 显示 300 行而不是 3 行的原因是因为它同时返回了三个表中的所有数据。
考虑到角色、公司和位置是包含上述表的主键的列,您所要做的就是一个join.
此外,考虑到您的这张表是您vacancy要从中显示数据的表,这是您应该使用的查询(将列名替换为您在数据库中实际拥有的列名):

SELECT 
vacancy.id as '#',
role.name as 'Role', 
company.name as 'Company',
location.name as 'Location'
FROM
vacancy
LEFT JOIN role on role.ID = vacancy.role
LEFT JOIN company on company.ID = vacancy.company 
LEFT JOIN location on location.ID = vacancy.location

编辑:当Dianuj发布他的答案时,我正要提交这个答案......所以,我决定在提交之前给我的答案一个额外的提升:D

于 2013-08-26T08:16:37.763 回答