0

我有两张桌子

“雇主”:

  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 工资、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
4

2 回答 2

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

于 2012-01-18T19:27:30.960 回答
0

看起来你只是让这变得比它需要的更复杂。如果我理解正确,您正在寻找链接表。把它分解成三个部分:

您的 SELECT 应包括雇主名称、职位名称、工资、相关职位名称、Rel Pos 工资、Rel Pos 雇主

来自雇主、职位

WHERE 职位.emp_id = 雇主.emp_id

这将为您提供雇主与职位配对时提供的所有项目的列表。

对不起,如果这不是你的意思。如果是,请给我点头。

于 2012-01-18T19:27:36.193 回答