Подсчет полей с предложением where в SQL - PullRequest
2 голосов
/ 11 августа 2011

можно ли подсчитать поля, где что-то?

У меня следующий запрос:

SELECT * FROM 
(SELECT messages.id as id,
       messages.user_id,
       messages.category_id,
       messages.parent_id,
       messages.message,
       messages.create_date,
       messages.update_date,
       messages.status,
       users.name as username,
       users.id as userid,
       users.email as useremail,
       users.phone as userphone,
       users.active as useractive,
       users.role as userroel,
       users.date as register_date
FROM `afo_messages` as messages 
INNER JOIN `key_users` as users ON messages.user_id = users.id
WHERE messages.category_id=5 AND messages.parent_id=0
ORDER BY messages.id DESC LIMIT 30) ilv 
ORDER BY id ASC

(Вот пример вывода: http://lab.mirgorod.us/res.pdf)

Этоможно добавить еще один столбец к этому запросу: Количество сообщений, которые являются дочерними (parent_id = id родительского сообщения)?

Ответы [ 2 ]

4 голосов
/ 11 августа 2011

Вы можете сделать это легко с помощью подзапроса:

SELECT * FROM 
(SELECT messages.id as id,
       messages.user_id,
       messages.category_id,
       messages.parent_id,
       messages.message,
       messages.create_date,
       messages.update_date,
       messages.status,
       users.name as username,
       users.id as userid,
       users.email as useremail,
       users.phone as userphone,
       users.active as useractive,
       users.role as userroel,
       users.date as register_date,
       (SELECT COUNT(*) FROM afo_messages WHERE parent_id=messages.id) AS `sub messages`
FROM `afo_messages` as messages 
INNER JOIN `key_users` as users ON messages.user_id = users.id
WHERE messages.category_id=5 AND messages.parent_id=0
ORDER BY messages.id DESC LIMIT 30) ilv 
ORDER BY id ASC
1 голос
/ 11 августа 2011

Попробуйте добавить это как столбец:

child_count = (select count(*) from afo_messages where parent_id=messages.id)
...