2

SQL に次のテーブルがあります。

メンサヘス

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

アーカイブ

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

外部キー Mensajes.IdMensaje ON Archivos.IdMensaje

Mensajes.IdCliente が何であるか疑問に思っている場合は、はい、別のテーブルを持つ外部キーがありますが、それは別の話です

まずはじめに・・・メールを送信するプログラムを作っています・・・ メールを送信すると、Mensajes にすべてのデータが挿入されます。メッセージにファイルを添付すると、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のメッセージではなく、ファイルが添付されたメッセージのみを表示します。それらのメッセージも表示したいのですが...どうすればよいですか?

あなたが私を助けてくれることを願っていますありがとう

4

1 に答える 1

5

に変更INNER JOINしますLEFT OUTER JOINMensajesに関連するレコードがない場合でも、これによりすべてのレコードが選択されArchivosます。

于 2012-08-13T18:19:41.907 に答える