我有两张桌子
“雇主”:
emp_id empl_name wage
1 john 20/h
2 mike 20/h
3 sam 30/h
的 “位置”:
pos_id emp_id pos_name related_pos
1 1 cleaner 0
2 3 driver 3
3 2 bodyguard 0
我需要显示表 雇主姓名,职位名称,工资,相关职位名称,Rel Pos Wage,Rel Pos雇主
现在我有疑问:
SELECT pos_name, empl_name, wage
FROM positions
LEFT JOIN employers ON employers.emp_id = positions.emp_id
下一个rquest不起作用,但会给出我需要的东西:
SELECT pos_name, empl_name, wage, (SELECT empl_name
FROM positions
LEFT JOIN employers ON employers.emp_id = positions.related_pos) as emp2,
(SELECT pos_name
FROM positions
WHERE pos_id = related_pos) as pos2
FROM positions
LEFT JOIN employers ON employers.emp_id = positions.emp_id
答案 0 :(得分:0)
我认为这段代码可以完成这项工作。
SELECT
p.pos_name,
p.empl_name,
p.wage,
(SELECT pos_name FROM positions WHERE pos_id = p.related_pos) as pos2
FROM positions as p
INNER JOIN employers as e ON e.emp_id = p.emp_id
我删除了以下代码。
(SELECT empl_name FROM positions
LEFT JOIN employers ON employers.emp_id = positions.related_pos) as emp2,
因为我认为有两个错误。首先,表中没有empl_name
列。其次,这个子查询将给出更多的结果。
当emp_id
答案 1 :(得分:0)
看起来你刚刚让它变得比它需要的更复杂。如果我理解正确的话,你正在寻找链接表。将其分解为三个部分:
您的SELECT应包括雇主姓名,职位名称,工资,相关职位名称,Rel Pos Wage,Rel Pos雇主
来自雇主,职位
WHERE positions.emp_id = employer雇佣者_mp_id
这将为您提供雇主在与职位配对时所有项目的清单。
对不起,如果这不是你的意思。如果是的话,请点头。