我有一张桌子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 行。
公司
角色
地点
我有一张桌子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 行。
公司
角色
地点
您可以使用连接来显示所有四个表中的数据
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)
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