2016-01-06 40 views
0

我有一個表用戶不同值從第一選擇和第二選擇(UNION WITH GROUP BY)

user_id | ui_id 
--------+------- 
    4 | 16 
--------+------- 
    5 | 17 
--------+------- 
    9 | 21 

USER_INFO

ui_id |  fname  |  lname 
------+-----------------+-------------- 
    16 |  Joanalyn | Lalicon 
------+-----------------+-------------- 
    17 | Jose Allan | Dela Cruz 
------+-----------------+-------------- 
    21 |  Steve  | Dela Cruz 

加班

ot_id | approve_by 
------+------------ 
    3 |  4 
------+------------ 
    6 |  9 
------+------------ 
    8 |  5 
------+------------ 
    9 |  9 
------+------------ 
    16 |  4 

最後LOA

loa_id| approve_by 
------+------------ 
    4 |  9 
------+------------ 
    6 |  4 

我想要得到的Full Nameqty,並且qty2作爲一個字段在一個查詢。但不能得到它的工作。我可以得到ot_id計數和loa_id計數的總和,但不能將值分開。

我的查詢:

SELECT name,qty2 <---- value from second select 
FROM 
(SELECT CONCAT(ui.fname,' ',ui.lname) AS name, 
     COUNT(o.ot_id) AS qty 
FROM overtime o 
INNER JOIN users u ON o.approve_by=u.user_id 
INNER JOIN user_info ui ON u.ui_id=ui.ui_id 
GROUP BY ui.ui_id 

UNION ALL 

SELECT CONCAT(ui.fname,' ',ui.lname) AS name, 
     COUNT(l.loa_id) AS qty2 <----- can't get this value 
FROM loa l 
INNER JOIN users u ON l.approve_by=u.user_id 
INNER JOIN user_info ui ON u.ui_id=ui.ui_id 
GROUP BY ui.ui_id) ui 

GROUP BY name 

我不能讓qty2qty工作。如果我選擇SUM(qty)將總結ot_idloa_id

我想是這樣的:

 Name   |  qty  |  qty2  
---------------------+------------------+------------------- 
    Joanalyn Lalicon |  2   |   1 
---------------------+------------------+------------------- 
Jose Allan Dela Cruz|  1   |   0 
---------------------+------------------+------------------- 
    Steve Dela Cruz |  2   |   1 

回答

2

試試這個:

SELECT CONCAT(ui.fname, ' ', ui.lname) AS name 
    , COUNT(o.ot_id) AS qty 
    , (SELECT COUNT(*) FROM loa WHERE approve_by = u.user_id) AS qty2 
    FROM users u 
    JOIN user_info ui ON ui.ui_id = u.ui_id 
    LEFT JOIN overtime o ON o.approve_by = u.user_id 
GROUP BY u.user_id; 

SQL Fiddle

+0

(巴掌臉)謝謝! :D –

+0

等一下。我在這裏遇到問題。即使是「loa」也有數據,但如果「超時」沒有,行將不會顯示。 –

+0

@LekzFlores將計數更新爲'COUNT(o.ot_id)',並在'超時'執行'LEFT JOIN' – shmosel

相關問題