![]() |
MYSQL: Неправильный подсчет COUNT
Проблема с запросом: неправильно подсчитывает переменныю cc
SELECT DISTINCT na.articleid,na.articletitle,na.userid,COUNT(nf.favoriteid) AS ca,COUNT(nc.commid) as cc FROM neolit_articles na LEFT JOIN neolit_comments nc ON (nc.articleid=na.articleid) LEFT JOIN neolit_favorites nf ON (nf.articleid=na.articleid) WHERE nf.favoriteid IS NOT NULL OR nc.commid IS NOT NULL GROUP BY nf.articleid,nc.commid Причем, в некоторых строках результат правильный, в некоторых - нет. В чем дело, не понятно... |
так таблички-то дай посмотреть....
|
OK.
Я привожу только одну строку из первой таблицы и соответствующие ей - из других. Код:
neolit_articles |
ну с этими данными твой запрос правильно считается... может быть есть смысл показать еще пару строк, которые неправильно обрабатываются?
и если не трудно, расскажи, что должен посчитать этот запрос |
Вот этот пример считается не правильно:
Код:
neolit_articlesКод:
neolit_articles |
Все, спасибо Ceo, запрос я подправил, теперь все работает :)
is_absent Дело было, оказывается, в неправильном GROUP BY Вот правильный запрос: SELECT DISTINCT na.articleid,na.articletitle,na.userid,COUNT(DISTINCT nf.fa voriteid) AS ca,COUNT(DISTINCT nc.commid) as cc FROM neolit_articles na LEFT JOIN neolit_comments nc ON (nc.articleid=na.articleid) LEFT JOIN neolit_favorites nf ON (nf.articleid=na.articleid) WHERE nf.favoriteid IS NOT NULL OR nc.commid IS NOT NULL GROUP BY na.articleid |
neo , КАК? у меня такаяже проблема\ есть два коунт и сум =(
и неправильно выводит подсчёты . поделись! неделю уже мучаюсь neo, я попробовал DISTINCT не получаеться =( SELECT DISTINCT dacms_user.name, dacms_news.id,avtor, dacms_comments.aid,dacms_rating.raid,rball, COUNT(dacms_comments.aid), COUNT(dacms_rating.raid), SUM(dacms_rating.rball) FROM dacms_news left outer join dacms_user on dacms_user.name=dacms_news.avtor LEFT JOIN dacms_comments ON dacms_comments.aid = dacms_news.id LEFT JOIN dacms_rating ON dacms_rating.raid = dacms_news.id GROUP BY dacms_news.id |
SELECT DISTINCT
dacms_user.name, dacms_news.id,avtor, dacms_comments.aid,dacms_rating.raid,rball, COUNT(DISTINCT dacms_comments.aid), COUNT(DISTINCT dacms_rating.raid), SUM(dacms_rating.rball) FROM dacms_news left outer join dacms_user on (dacms_user.name=dacms_news.avtor) LEFT JOIN dacms_comments ON (dacms_comments.aid = dacms_news.id) LEFT JOIN dacms_rating ON (dacms_rating.raid = dacms_news.id) GROUP BY dacms_news.id |
fanks =)
подправил запрос чуть чуть =) и всё ок! DISTINCT насколько я не выводит одинаковые записи из бд? [ложка дёгтя] но у меня один голосовавший оставил оценку десять а мне сумму всех голосов выводит 180 =( вот сам запрос SELECT DISTINCT dacms_user.name, dacms_news.id,avtor, COUNT(DISTINCT dacms_comments.id) as comments_sount, COUNT(DISTINCT dacms_rating.rid) as rating_count, SUM( dacms_rating.rball) as rating_sum FROM dacms_news left outer join dacms_user on (dacms_user.name=dacms_news.avtor) LEFT JOIN dacms_comments ON (dacms_comments.aid = dacms_news.id) LEFT JOIN dacms_rating ON (dacms_rating.raid = dacms_news.id) GROUP BY dacms_news.id а когда голос(оценка) равен одному то сумма=18 :idontnow: |
почемуто по моему запросу сумма = сумма голосов * кол-во комментариев
|
| Часовой пояс GMT +4, время: 08:58. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.