2011-01-14 4 views
0
SELECT DATE_FORMAT(MAX(a.EffectiveDate),'%d-%m-%Y') AS `Date`, 
     CONCAT(a.FirstNm,' ',IFNULL(a.MiidleNM,' '),' ',IFNULL(a.LastNM,' ')) AS `EmployeeName`, 
     `b`.`BranchName` AS `Branch` 
    FROM `tbl_employeemaster` AS `a` 
    JOIN `tbl_branch` AS `b` ON a.BrnNm = b.idBranch  
UNION  
SELECT DATE_FORMAT(MAX(c.EffectiveDate),'%d-%m-%Y') AS `Date`, 
     CONCAT(c.FirstNm,' ',IFNULL(c.MiidleNM,' '),' ',IFNULL(c.LastNM,' ')) AS `EmployeeName `, 
     `d`.`BranchName` AS `Branch`  
    FROM `tbl_employeehistory` AS `c`  
    JOIN `tbl_branch` AS `d` ON c.BrnNm = d.idBranch 

...에 두 개의 행의 표시는 출력이다MySQL은 : 단일 행

Date  EmployeeName Branch 
------------------------------------- 
15-01-2011 ABCD   Bangalore 
10-10-2010 ABCD   Magalore 

하지만

EmployeeName Branch  Date  previous Branch  Date 
ABCD  Bangalore  15-01-2011 Mangalore  10-10-2010 
+0

테이블 스키마를 게시하십시오. –

+0

테이블에 더 긴 별칭을 사용하는 것이 좋습니다. 단일 문자 테이블 별칭은 입력하기가 더 쉽지만 6 개월 후에이 문자표로 돌아와서 쿼리를 읽으 려하면 설명이 포함 된 이름을 사용하게됩니다. –

답변

0

아래와 같이 전 출력을 원하는이 시도 :

SELECT a.EmployeeName, 
      a.Branch, 
      a.Date, b.branch previousBranch, 
        b.Date previousDate 
    FROM 
     (SELECT DATE_FORMAT(MAX(a.EffectiveDate),'%d-%m-%Y') AS `Date`, 
       CONCAT(a.FirstNm,' ',IFNULL(a.MiidleNM,' '),' ',IFNULL(a.LastNM,' ')) AS `EmployeeName`, 
       `b`.`BranchName` AS `Branch` 
     FROM `tbl_employeemaster` AS `a` 
     INNER JOIN `tbl_branch` AS `b` ON a.BrnNm = b.idBranch) a 
    LEFT JOIN 
     (SELECT DATE_FORMAT(MAX(c.EffectiveDate),'%d-%m-%Y') AS `Date`, 
       CONCAT(c.FirstNm,' ',IFNULL(c.MiidleNM,' '),' ',IFNULL(c.LastNM,' ')) AS `EmployeeName `, 
       `d`.`BranchName` AS `Branch` 
     FROM `tbl_employeehistory` AS `c` 
     INNER JOIN `tbl_branch` AS `d` ON c.BrnNm = d.idBranch) b 
    ON a.EmployeeName = b.EmployeeName 
+1

'LEFT JOIN'이 더 적합 할 수 있습니다. 직원이 이전 직업이 없다면 –

+0

좋은 캐치 ... 게시물을 업데이트했습니다 ... – Chandu