私はフィールドを持つ行をカウントするstatus
です等しい1
だけのための1つのサブクエリUNION
前:UNIONを使用してフィールドを値で合計する方法は?
... UNION SELECT receiver, login, sex, avatar, status, idMessage
FROM messages
LEFT JOIN users
ON users.idUser = messages.receiver
WHERE sender = 1
GROUP BY receiver, sender
:
SELECT sender, login, sex, avatar, status,
SUM(case when status = 1 AND receiver = 1 then 1 else 0 end) AS unread_messages
FROM messages
LEFT JOIN users
ON users.idUser = messages.sender
WHERE receiver = 1
それが正しい動作しますが、私は、最初のクエリのためUNION
を追加するときそれは数えることの結果を破った。 SELECT
が同じフィールドを持っていない
case when (status = 1 and receiver = 1)
をあなたが持っているものが正しいのですか?私はあなたがそれが間違っていると思う結果の 'idMessage'カラムのためかもしれないと思います。 –
あなたは正しいと思われます – Gaga