2016-12-13 29 views
0

我試圖讓我的數據庫中的所有員工具有某種技能,例如管道工。當我執行以下查詢時,我正在獲取我想要的數據,但它多次顯示該員工。將多行減少爲單行

SELECT 
     TE.intEmployeeID 
    ,TE.strLastName + ', ' + TE.strFirstName AS strEmployeeName 
    ,CONVERT (VARCHAR, TE.dteHireDate, 101) AS dteHireDate 
    ,TES.intSkillID 
    ,TS.strSkills 

FROM 
    TEmployees   AS TE 
    ,TEmployeeSkills AS TES 
    ,TSkills   AS TS 
    ,TJobEmployees  AS TJE 
WHERE 

     TE.intEmployeeID = TJE.intEmployeeID 
    AND TS.intSkillID  = TES.intSkillID 
    AND TES.intEmployeeID = TE.intEmployeeID 
    AND TES.intEmployeeID = TJE.intEmployeeID 
    AND TES.intSkillID = 6 

/* 
What I am getting: 

intEmployeeID strEmployeeName dteHireDate intSkillID strSkills 
    2   Quagmire, Glen  06/10/2012  6   Plumbing 
    4   Cage, Luke   01/10/2012  6   Plumbing 
    4   Cage, Luke   01/10/2012  6   Plumbing 
    2   Quagmire, Glen  06/10/2012  6   Plumbing 
    2   Quagmire, Glen  06/10/2012  6   Plumbing 
    4   Cage, Luke   01/10/2012  6   Plumbing 

    What I need: 

intEmployeeID strEmployeeName dteHireDate intSkillID strSkills 
    2   Quagmire, Glen  06/10/2012  6   Plumbing 
    4   Cage, Luke   01/10/2012  6   Plumbing 
*/ 
+3

某些表格可能有一對多的關係。使用'distinct'來獲得唯一的行。 –

+0

可能重複的[獲得每組最高1行](http://stackoverflow.com/questions/6841605/get-top-1-row-of-each-group) –

+0

我的問題如何被投票? –

回答

2

嘗試select distinct,而不是僅僅select

此外,我會建議更新您的連接語法。

select distinct 
     te.intEmployeeid 
    ,te.strLastName + ', ' + te.strFirstName as strEmployeeName 
    ,convert (varchar, te.dteHireDate, 101) as dteHireDate 
    ,tes.intSkillid 
    ,ts.strSkills 
from temployees as te 
    inner join temployeeSkills as tes on tes.intEmployeeid = te.intEmployeeid 
    and tes.intSkillid = 6 
    inner join tskills as ts   on ts.intSkillid  = tes.intSkillid 
    inner join tjobEmployees as tje on tje.intEmployeeid = te.intEmployeeid