2013-10-14 14 views
0

這可能只是一個星期一的例子,但我的大腦似乎無法弄清楚我需要運行的查詢來獲得我需要的結果。Count()發生在一個單獨的表中

我有兩個表; MessageMessageToMessage記錄原始消息 - 例如,標題,正文,日期發送等等。MessageTo記錄實例被髮送給收件人。例如,MessageTo表中的多行可能指向Message表中的單行 - 表示一條消息已發送給多個人。 MessageTo表中的基本信息是messageId,recipientId,acknowledgedDate和其他一些信息。

我需要的是一個查詢,返回Message s,計數顯示發送了多少人(例如,MessageTo表中顯示了多少次messageId)。

我的第一次嘗試是做一個查詢來得到Message的列表,然後做第二個查詢來得到MessageTo表上的發生次數。不過,我想這樣做只使用一個查詢,如果可能的話 - 因爲這個過程將被重複許多次,我想盡可能使它流水線化。重複的多個數據庫查詢並不理想。任何幫助深表感謝。

我使用SQLite如果這有所作爲,但我認爲它與其他許多SQL版本相當兼容。

回答

3

沿着這條線應該工作。你沒有列出唯一標識每條消息的字段,所以我使用「MessageId,你應該改變爲適用於你的分區。

Select 
    m.* 
, (Select Count(*) From MessageTo mt where mt.MessageId = m.MessageId) As Cnt 
From Message m 
+0

謝謝你,我慢慢地記住了! –

相關問題