imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 24.09.2004, 22:51     # 1
Psionic Vision
Full Member
 
Аватар для Psionic Vision
 
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110

Psionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собой
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

Причем, в некоторых строках результат правильный, в некоторых - нет. В чем дело, не понятно...
Psionic Vision вне форума  
Старый 25.09.2004, 08:41     # 2
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
так таблички-то дай посмотреть....
__________________
Nunc est bibendum
is_absent вне форума  
Старый 25.09.2004, 17:40     # 3
Psionic Vision
Full Member
 
Аватар для Psionic Vision
 
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110

Psionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собой
OK.
Я привожу только одну строку из первой таблицы и соответствующие ей - из других.

Код:
neolit_articles

articleid articletitle
87         Евдоха

neolit_favorites

favoriteid userid articleid  .... (есть еще поля но не важно)
23          9     87
44          10    87

neolit_comments

commid userid articleid .... (есть еще поля но не важно)
19        68      87
48        18      87
Psionic Vision вне форума  
Старый 26.09.2004, 12:20     # 4
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
ну с этими данными твой запрос правильно считается... может быть есть смысл показать еще пару строк, которые неправильно обрабатываются?

и если не трудно, расскажи, что должен посчитать этот запрос
__________________
Nunc est bibendum
is_absent вне форума  
Старый 26.09.2004, 17:10     # 5
Psionic Vision
Full Member
 
Аватар для Psionic Vision
 
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110

Psionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собой
Вот этот пример считается не правильно:

Код:
neolit_articles

articleid articletitle
422       Сеть

neolit_favorites

favoriteid userid articleid  .... (есть еще поля но не важно)
23          129    422

neolit_comments

commid userid articleid .... (есть еще поля но не важно)
26        95      422
27        155      422
28        7      422
29        18      422
30        22      422
31        155      422
Это тоже неправильно подсчтывается:

Код:
neolit_articles

articleid articletitle
252       Тестовое Название

neolit_favorites

favoriteid userid articleid  .... (есть еще поля но не важно)
[СООТВЕТСТВУЮЩИХ СТРОК НЕ НАЙДЕНО]

neolit_comments

commid userid articleid .... (есть еще поля но не важно)
26        9      252
27        68     252
Psionic Vision вне форума  
Старый 26.09.2004, 22:01     # 6
Psionic Vision
Full Member
 
Аватар для Psionic Vision
 
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110

Psionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собой
Все, спасибо 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
Psionic Vision вне форума  
Старый 02.10.2004, 11:56     # 7
mxdmg
Guest
 
Сообщения: n/a

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
 
Старый 02.10.2004, 17:11     # 8
Psionic Vision
Full Member
 
Аватар для Psionic Vision
 
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110

Psionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собой
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
Psionic Vision вне форума  
Старый 02.10.2004, 23:14     # 9
mxdmg
Guest
 
Сообщения: n/a

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
 
Старый 03.10.2004, 22:16     # 10
mxdmg
Guest
 
Сообщения: n/a

почемуто по моему запросу сумма = сумма голосов * кол-во комментариев
 

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 12:19.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.