如何从SQL中的另一个表获取计数?

时间:2012-08-13 18:17:00

标签: sql count group-by inner-join

我在SQL上有以下表格:

Mensajes

IdMensaje (int) PK NOT NULL
IdCliente (int)
CorreoCliente (varchar(100))
CorreosAdicionales (varchar(MAX))
Tema (varchar(100))
Mensaje (varchar(MAX))
Fecha (date)
Hora (time(5))

Archivos

IdArchivo (int) PK NOT NULL
IdMensaje (int)
Nombre (varchar(200))

外国钥匙Mensajes.IdMensaje,Archivos.IdMensaje

如果你想知道Mensajes.IdCliente是什么,是的,它有一个外键与另一个表,但那是另一个故事

首先介绍...我正在制作一个程序,您可以在其中发送电子邮件...当您发送电子邮件时,我会在Mensajes上插入所有数据,如果您在邮件上附加了文件,它将会同样在Archivos上插入每个文件(显然Archivos.IdMensaje等于之前插入的Mensajes.IdMensaje)

所以这是我的问题: 我想查询从Mensajes获取所有数据的查询,还要添加另一列,它将显示该消息附加了多少文件... 我设法使用一个查询,我确实得到了那些数据(好吧,有点)

SELECT Mensajes.IdMensaje, COUNT(Archivos.IdArchivo) AS Expr1
FROM Mensajes INNER JOIN Archivos ON Mensajes.IdMensaje = Archivos.IdMensaje
GROUP BY Mensajes.IdMensaje

但是它只显示附加了文件的消息,而不显示结果为0的消息,我也想显示这些消息... 我该怎么做?

希望你能帮助我 感谢

1 个答案:

答案 0 :(得分:5)

将您的INNER JOIN更改为LEFT OUTER JOIN;这将选择Mensajes中的所有记录,即使它们在Archivos中没有相关记录。