2016-08-23 23 views
-1

SQLステートメントを結合する方法に問題があります(内部結合とすべての結合をSQLの初心者として行います)。すべてのメンバーが問題を解決するのを助けてくれることを願っています。 leave_Trxとleave_Historyは労働組合である必要は同じ値が含まれています。ありがとうございます。結合ユニオンと内部結合ステートメント

select m.name, t.startdt, t.enddt,t.noday,t.createdDT, 
     (case when t.approveST = 'Y' then 'Approved' when t.approveST = 'N' then 'Not Approved' else 'Pending' end) as appST 
     from leave_Trx t 
     inner join leave_MType m on m.typeID = t.trxID 
     inner join hr_personaldata b on b.pers_ID = @pers_ID 
     where year(t.startdt) = @yyear 
     and b.pers_ID = @pers_ID and b.pers_name LIKE '%'[email protected]_name+'%' 
     and b.pers_compID LIKE ''[email protected]+'' 
     union all 
     select * from leave_History h 
     where year(h.startdt) = @yyear and h.status = 'A' 
     ORDER BY t.startdt 
+0

は 'leave_History'テーブルには6つの列を持っていますか?あなたの電流出力/エラーは何ですか? –

+0

は'どこ年間使用しないでください。 (h.startdt)= @ yyear' http://stackoverflow.com/questions/14104304/mysql-select-where-datetime-matches-day-and-not-nestarily-timeなぜあなたはすべきではないか – user1032531

+1

エラーはUNION、INTERSECTまたはEXCEPT演算子を使用して結合されたすべてのクエリは、ターゲットリストに同じ数の式を持つ必要があります。 " –

答えて

0
select t.pers_ID,t.startdt, t.enddt,t.noday,t.createdDT, 
     (case when t.approveST = 'Y' then 'Approved' when t.approveST = 'N' then 'Not Approved' else 'Pending' end) as appST 
     from leave_Trx t 
     inner join leave_MType m on m.typeID = t.pers_ID 
     inner join hr_personaldata l on l.pers_ID = @pers_ID 
     where year(t.startdt) = @yyear and t.status = 'A' 
     union all 
     select h.pers_ID, h.startdt, h.enddt,h.noday,h.createdDT, 
     (case when h.approveST = 'Y' then 'Approved' when h.approveST = 'N' then 'Not Approved' else 'Pending' end) as appST 
     from leave_History h 
     inner join leave_MType m on m.typeID = h.pers_ID 
     inner join hr_personaldata b on b.pers_ID = @pers_ID 
     where year(h.startdt) = @yyear and h.status = 'A' 
関連する問題