Count()出现在一个单独的表中

时间:2013-10-14 11:19:33

标签: sql sqlite

这可能仅仅是星期一的情况,但我的大脑似乎无法弄清楚我需要运行的查询以获得我需要的结果。

我有两张桌子; MessageMessageToMessage记录原始消息 - 例如,Title,Body,DateSent等等。MessageTo记录发送给收件人的消息的实例。例如,MessageTo表中的多行可能指向Message表中的单行 - 这意味着已向多个人发送了一条消息。 MessageTo表中的基本信息是messageId,recipientId,acknowredDate和其他几个。

我需要的是一个返回Message的查询,其中包含一个计数,显示已发送给的人数(例如,message {1在MessageTo表上显示的次数)。

我的第一次尝试是进行一次查询以获取Message的列表,然后执行第二次查询以获取MessageTo表上的出现次数。但是,我想这样做只使用一个查询,如果可能的话 - 因为这个过程将重复多次,我想尽可能地使其流式化。重复的多个数据库查询并不理想。非常感谢任何帮助。

我使用SQLite如果这有所不同,虽然我认为它与很多其他版本的SQL非常兼容。

1 个答案:

答案 0 :(得分:3)

沿着这条线的东西应该有效。您没有列出唯一标识每条消息的字段,因此我使用的是“MessageId”,您应该更改为适用于您的数据库的内容。

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