MySQL从其他表中填写值

时间:2013-08-26 08:02:46

标签: mysql

我有一个名为vacancy的表,看起来像这样

enter image description here

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

公司 Company

作用 role

位置 location

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

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

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