2017-12-23 8 views
0

1つの別名で二つの条件にカウントされます。 sender行は、メッセージを送信したユーザーのIDです。返信を受けると、sender_read1となり、recipientと同じになります。私はユーザーが持っている未読メッセージの合計を数える必要があります。私はこのようなものを試しました:選択は私のSQLテーブルには、以下の構造を有する

SELECT COUNT(CASE WHEN recipient = ? AND recipient_read = 0 THEN 1 END) as unread FROM pm 
UNION SELECT COUNT(CASE WHEN sender = ? AND sender_read = 0 THEN 1 END) as unread FROM pm 

しかし、それは動作していないようです。基本的には、2つのカウントを組み合わせて1つのエイリアスを返す必要があります。これどうやってするの?

答えて

0

1つだけの場合の式に2つの条件を組み合わせて:

SELECT COUNT(CASE WHEN recipient = ? AND recipient_read = 0 THEN 1 
        WHEN sender = ? AND sender_read = 0 THEN 1 
        ELSE null 
      END) as unread FROM pm 
WHERE recipient = ? OR sender = ? 
関連する問題