0

3 つのテーブルに対するクエリの実行に問題があります。

ユーザー、user_teams、user_messages

ライン マネージャーがチームの全メンバーの受信メールと送信メールの合計を確認できるレポートを作成したいと考えています。クエリは、送信または受信がない場合にユーザーにゼロの値を表示することです。

私のテーブルは次のとおりです。

users
------
uid
forename
surname

user_teams
-------------
id
manager_id
member_id

user_messages
-------------
id
outgoing
incoming
uid
msg_date

manager_id と member_id はどちらも、ユーザーの uid フィールドに関連しています。マネージャーとユーザーの間には 1 対多の関係があります。

これまでの私のクエリは次のとおりです。

SELECT u.uid, u.forename, u.surname,
SUM(IF(m.outgoing=0 ,1,0)) AS total_outgoing,
SUM(IF(m.incoming>0 ,1,0)) AS total_incoming,
FROM users u
INNER JOIN user_messages m
ON m.uid=u.uid AND m.msg_date>='2012-09-01' AND m.msg_date<='2013-08-31'
RIGHT JOIN user_teams ut ON ut.member_id=u.uid
WHERE ut.leader_id=?
GROUP BY u.uid
ORDER BY u.surname ASC 

これは、ユーザーがメッセージを送信または受信した場合に正しく機能します。ただし、両方のフィールドの SUM がゼロの場合、uid、forename、および surname に対して NULL を受け取ります。

4

2 に答える 2