我正在MySQL中編寫存儲過程以獲取一組管理信息。問題是:我需要「水平」而不是「垂直」的結果。更詳細地說明,這裏的數據庫設計,我得處理:在存儲過程中選擇特定值作爲列
users
- COMPANY_ID
- user_type_id
companies
- COMPANY_ID
user_types
- user_type_id
- 描述
所以這裏的交易: 我需要數由描述分組的所有用戶,然後由公司分組。我可以給像這樣:
SELECT
COUNT(*) AS number,
ut.descriptor,
company_id
FROM
users u
INNER JOIN
user_types ut
ON ut.user_type_id = u.user_type_id
AND descriptor LIKE 'xyz%'
INNER JOIN
companies c
ON u.company_id = c.company_id
GROUP BY
ut.descriptor,
company_id
但這不過給我正確的結果,:這份名單是「垂直」。我爲每個描述符獲得一個新行。我實際上希望描述符成爲列。行應按公司分組。這就是應用程序邏輯所期望的。
我想先取出描述符,稍後再做計算,但這給我帶來了完全相同的問題。我可以爲每個描述符執行一個子查詢,但這會非常非常醜陋。
作爲總結,預期的結果是這樣的,其中3個後列是從user_types表實際上描述符:
company
- admin
- customer
- supplier
1 - 4 - 1 - 5
1 - 7 - 4 - 2
這將轉化爲: Company 1 has 4個管理員,1個客戶,5個供應商。 公司2有7個管理員,4個客戶,2個供應商。
我真的覺得我在這裏錯過了一些東西。我忽略了什麼?
嗯在UT加入...這看起來合法的。我會試試這個。 – Sherlock
工程就像一個魅力! – Sherlock