MySQL从表2中选择与表1相同的表

时间:2012-01-18 18:50:55

标签: mysql join request cross-join

我有两张桌子

“雇主”:

  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

2 个答案:

答案 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

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

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