2015-09-02 58 views
0

我有一個用戶表ldap_karen,其中包含所有員工數據,包括sup_id(主管ID)和員工的工作角色。爲什麼我的mysql查詢獲取「最」數據只是永遠運行?

我也有一個supervisor表,它具有所有獨特的sup_id。

目前我有:

SELECT 
ldap_sups.sup_id, 
COUNT(ldap_karen.uid) as team_nums, 
COUNT(sa_title) as title_nums, 
(SELECT sa_title 
FROM ldap_karen 
WHERE ldap_sups.sup_id=ldap_karen.sup_id 
group by sa_title 
order by count(ldap_karen.sa_title) desc 
limit 1) as sup_role, 
ldap_karen.sa_title, 
ldap_karen.regionname 
FROM 
ldap_sups 
JOIN ldap_karen ON ldap_sups.sup_id = ldap_karen.sup_id 
GROUP BY sup_id 

所以這給了我主管ID,然後號隊員,數職稱的(不是所有員工都職稱),sup_role - 這是不工作,sa_title(只列出列表中最後一個人的職位)和地區。

我想sup_role顯示「最」的職位。因此,無論職位最高的職位,主管下的員工都是sup_role。

注意:現在我的查詢剛剛運行 - 由於「sup_role」查詢的問題。沒有輸出。

+0

這似乎是它應該工作。你能解釋發生了什麼問題嗎?你有錯誤信息嗎? 另外,是否可以'WHERE ldap_sups.sup_id = ldap_karen.thomssupervisorid'應該是'WHERE ldap_sups.sup_id = ldap_karen.sup_id'? –

+0

@TeddyOrt - 這只是運行...從來沒有輸出任何東西。是的,這是我的問題編輯錯誤。 – blankip

回答

0

這應該工作,但它不是最好的辦法:

SELECT 
    ldap_sups.sup_id, 
    COUNT(ldap_karen.uid) as team_nums, 
    COUNT(ldap_karen.sa_title) as title_nums, 
    sums_title.sa_title as sup_role, 
    ldap_karen.sa_title, 
    ldap_karen.regionname 
FROM 
    ldap_sups 
    JOIN ldap_karen ON ldap_sups.sup_id = ldap_karen.sup_id 
    LEFT JOIN ( 
      SELECT sup_id, max(sum), sa_title from 
       (SELECT sup_id, count(sa_title) as sum, sa_title 
       FROM ldap_karen 
       group by sa_title,sup_id) supsup 
      group by sup_id 
     ) as sums_title on sums_title.sup_id = ldap_sups.sup_id 
GROUP BY sup_id 
+0

這也只是運行.... – blankip

+0

你有輸出?我證明了這一點,這很好。 –

+0

它永遠不會輸出。我有80K員工,所以想知道這是文件大小還是其他。 – blankip

相關問題