2013-10-14 3 views
0

Cela peut être un cas des lundis, mais mon cerveau ne semble pas comprendre la requête que je dois exécuter pour obtenir les résultats dont j'ai besoin.Nombre d'occurrences Count() dans un tableau distinct

J'ai deux tables; Message et MessageTo. Message enregistre un message original - par exemple, Titre, Corps, DateSent etc enregistrements instances de ce message étant envoyé à un destinataire. Par exemple, plusieurs lignes de la table MessageTo peuvent pointer vers une seule ligne dans la table Message, ce qui signifie qu'un message a été envoyé à plusieurs personnes. Les informations de base dans la table MessageTo sont les suivantes: messageId, recipientId, acknowlededDate et quelques autres. Ce dont j'ai besoin, c'est d'une requête qui renvoie Message s avec un décompte indiquant le nombre de personnes auxquelles elle a été envoyée (par exemple, combien de fois messageId apparaît sur la table MessageTo).

Ma première tentative à ceci était de faire une requête pour obtenir une liste de Message s, puis faire une deuxième requête pour obtenir le nombre d'occurrences sur la table MessageTo. Cependant, je voudrais faire ceci en utilisant une seule requête, si possible - comme ce processus sera répété plusieurs fois et je voudrais le faire aussi bien que possible. Les requêtes de bases de données multiples répétées ne sont pas idéales. Toute aide est très appréciée.

J'utilise SQLite si cela fait une différence, même si je pense que c'est assez compatible avec beaucoup d'autres versions de SQL.

Répondre

3

Quelque chose le long de cette ligne devrait fonctionner. Vous n'avez pas listé le champ qui identifiait chaque message de façon unique, j'utilise donc "MessageId" et vous devez changer ce qui s'applique à votre base de données

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

Merci, vous avez fait un jogging dans ma mémoire! –