2014-09-10 69 views
0

使用此question,我一直试图使用不同类型的JOINS尝试组合这两个SELECT查询。他们非常相似,并且自行工作良好,但是当我尝试创建第三列EmpFirstName3时,查询就会出现。我如何成功结合这两个表?使用JOIN在MySQL中创建第三列的类似查询使用JOIN

HTG_TechProps表

EmpNumber  |  EmpFirstName 

111   |  Bob 

222   |  John 

333   |  Randy 

HTG_TechStaffSets表

EmpNumber  |  StaffSetID 

CCN31   |  111 

CCN11   |  222 

POWW   |  Null 

/* Techs */ 
    SELECT 
     p.EmpNumber, 
     p.EmpFirstName AS EmpFirstName1,  
     t.EmpFirstName AS EmpFirstName2 
    FROM HTG_TechProps p 
    LEFT JOIN HTG_TechStaffSets s ON p.EmpNumber=s.EmpNumber 
    LEFT JOIN HTG_TechProps t ON t.EmpNumber=s.StaffSetID 
    ORDER BY p.EmpNumber 


/* Staff Sets */ 


SELECT 
    p.EmpNumber, 
    p.EmpFirstName AS EmpFirstName1,  
    t.EmpFirstName AS EmpFirstName2 
FROM HTG_TechProps p 
LEFT JOIN HTG_TechStaffSets s ON p.EmpNumber=s.StaffSetID 
LEFT JOIN HTG_TechProps t ON t.EmpNumber=s.EmpNumber 
ORDER BY p.EmpNumber 
+0

我试过基于我在堆栈上发现的问题,但我明显地把它弄糊涂了。你可以创建一个样本请@ItalianStallion – 2014-09-10 20:02:23

+0

我完全失去了。您将techProps加入empNumber的Staff集合,但是您的示例数据empNumber在两个表之间并不相同。然后你加入empnumber和staffsetid。 – SQLChao 2014-09-10 20:09:35

+0

我知道,它完全顶起来了。我无法控制桌子。在某些情况下,StaffSetID与EmpNumber匹配,在某些情况下,它不会......这足以让我疯狂LOL – 2014-09-10 20:13:03

回答

1

试试这个:

SELECT 
     p.EmpNumber, 
     p.EmpFirstName AS EmpFirstName1,  
     t.EmpFirstName AS EmpFirstName2 
    FROM HTG_TechProps p 
    LEFT JOIN HTG_TechStaffSets s ON p.EmpNumber=s.EmpNumber 
    LEFT JOIN HTG_TechProps t ON t.EmpNumber=s.StaffSetID 

UNION ALL 

SELECT 
    p.EmpNumber, 
    p.EmpFirstName AS EmpFirstName1,  
    t.EmpFirstName AS EmpFirstName2 
FROM HTG_TechProps p 
LEFT JOIN HTG_TechStaffSets s ON p.EmpNumber=s.StaffSetID 
LEFT JOIN HTG_TechProps t ON t.EmpNumber=s.EmpNumber 

ORDER BY p.EmpNumber 
+0

哦,伙计,谈论我复杂化的事情......我正在尝试INNER JOINS和UNION进行查询。谢谢SOOOO! – 2014-09-10 20:07:01

+0

不客气! – ericpap 2014-09-10 20:23:56