2012-08-13 46 views
2

我对SQL下表:如何从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 ON 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的消息,我还想显示这些消息...... 我该怎么做?

希望你能帮助我 感谢

+2

这将是一个左连接,而不是内连接 – Zeph 2012-08-13 18:19:09

回答

5

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

+0

谢谢......它工作得很好.. =) – Victor 2012-08-13 19:13:23

相关问题