2013-03-28 12 views
1

我想寫一個SQL查詢來完成一個圖形圖表,我不知道如何正確地做到這一點。 這是情況。 圖表類型是bar,我想列出Y軸上的'消息類型',X軸上的'消息數量'以及Y軸上的每個值,創建一個數字爲'消息類型'中每個用戶的'消息'。 事情是這樣的:http://www.highcharts.com/demo/bar-stacked圖形圖表的SQL查詢。不知道如何在這種情況下使用JOIN

我想回的是:

SELECT COUNT(Messages.MessageId), Messages.UserName, MessageTypes.Description 

這真的很簡單,但我的問題是,我想將所有在Y軸上可能的「MessageTypes」,即使沒有任何鏈接到它們的「消息」(在這種情況下,將COUNT置爲0)。

我已經試過這一點,但它不工作:

FROM MessageTypes 
LEFT OUTER JOIN Messages ON MessageTypes.MessageTypeId = Messages.MessageTypeId 

任何想法?

在此先感謝您提供的任何幫助。

回答

1

編輯:你改變了我的問題! )

組通過描述和user.name,計數記錄和左外連接B/T消息和用戶:

select 
    mt.Description MessageTypeDescription 
    , m.UserName -- will be null if no messages exist for a given type 
    , UserMessageTypeCount = case when m.UserName is null then 0 else COUNT(1) end 
from 
    MessageTypes mt 
    left outer join Messages m 
    on mt.MessageTypeId = m.MessageTypeId 
group by 
    mt.Description 
    m.UserName 

結果將是每用戶

每個消息類型的消息數
+0

對不起。我需要改變它以適應賬單。 :)但我有我的問題解決。謝謝,@Moho – melancia 2013-03-28 09:45:41

+0

只是改變了計數語句 - 舊的方式將返回1,即使沒有一種類型的消息存在。現在,如果m.UserName爲null,我們假設計數應該爲0.如果在消息記錄存在時m.UserName爲空,則必須在此處執行其他操作。 – Moho 2013-03-28 09:50:35

+0

我已經添加了一個WHERE來消除NULL。謝謝! :) – melancia 2013-03-28 09:54:15

相關問題