2011-01-14 18 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 

...に2列の表示が出力されます。の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

関連する問題