Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Базы данных MySQL

  Все выпуски  

RFpro.ru: Базы данных MySQL


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 96
∙ повысить рейтинг »
Megaloman
Статус: Академик
Рейтинг: 48
∙ повысить рейтинг »
Alexander Babich
Статус: Профессор
Рейтинг: 0
∙ повысить рейтинг »

∙ Базы данных

Номер выпуска:523
Дата выхода:05.10.2017, 14:45
Администратор рассылки:Коцюрбенко Алексей aka Жерар (Мастер-Эксперт)
Подписчиков / экспертов:18 / 13
Вопросов / ответов:3 / 5

Консультация # 172490: Доброго времени суток! Делаю систему оценки качества товаров на MySQL и PHP. Что может быть проще, создать таблицу с голосами за товар и выводить средний рейтинг. Табличку для хранения голосов создал с полями what и vote (ID товара и оценка соответственно). Выбрать количество голосов и подсчитать сумму всех голосов, а также вычислить средн...
Консультация # 104239: Здравствуйте уважаемые специалисты. у меня возникла проблемка. есть два сервера MS SQL, основной и резервный, между ними идет репликация базы. Можно ли сделать так что бы реплицировало доменные учетные записи тоже в резервный сервер? и как? спасибо....
Консультация # 66007: Здраствуйте! есть такая проблема, веду одновременно 2 базы (рабочая и бухгалтерская), нужно что бы при создании нового контраагента в рабочей базе в бухгалтерской тоже он вносился, т.е. что бы список контрагентов совпадал, и чтобы он правился одновременно в обоих базах ..

Консультация # 172490:

Доброго времени суток!
Делаю систему оценки качества товаров на MySQL и PHP.
Что может быть проще, создать таблицу с голосами за товар и выводить средний рейтинг.
Табличку для хранения голосов создал с полями what и vote (ID товара и оценка соответственно). Выбрать количество голосов и подсчитать сумму всех голосов, а также вычислить среднюю оценку можно простым запросом –

SELECT * , SUM( `vote` ) AS `sum` , count( `vote` ) AS `CountVote` , SUM( `vote` ) / count( `vote` ) AS `rating` 
FROM `cms_rating` 
WHERE `what` = '2306'

Этот запрос выполняется достаточно быстро, но меня смущает то, что сумма голосов и их количество подсчитываются дважды.
Так же если нужно подсчитать рейтинг более чем для одного товара, то такой запрос не срабатывает. Если в условие WHERE перечислить все нужные идентификаторы товара, то рейтинг посчитается только для первого из них. (WHERE `what` = '1' OR `what` = '2' OR `what` = 'n').
Собственно вот и вопросы, как избавиться от двойного подсчёта полей `sum` и `CountVote`, а также как вычислить рейтинг нескольких товаров в одном запросе.

Дата отправки: 22.09.2009, 17:54
Вопрос задал: Cimus
Всего ответов: 3
Страница онлайн-консультации »


Консультирует vladisslav:

Здравствуйте, Cimus!
Чтобы избежать двойного вычисления, нужно использовать переменные. Чтобы посчитать для нескольких товаров (или всех), нужно использовать группировку.

Приложение:

Консультировал: vladisslav
Дата отправки: 22.09.2009, 18:32

5
Спасибо!
-----
Дата оценки: 22.09.2009, 22:06

Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Victor Pyrlik:

Здравствуйте, Cimus.

SELECT what, SUM(vote) AS sum_vote , count(vote) AS count_vote , AVG( vote ) AS avg_vote
FROM cms_rating
WHERE what = '2306'
GROUP BY what

или, для множества
WHERE what IN (2306,2307,2308 и т.д.)

URL >>ОБОБЩЕНИЕ ДАННЫХ С ПОМОЩЬЮ АГРЕГАТНЫХ ФУНКЦИЙ

Консультировал: Victor Pyrlik
Дата отправки: 22.09.2009, 19:02

5
Спасибо за отличный ответ и за ссылку!
-----
Дата оценки: 22.09.2009, 22:05

Рейтинг ответа:

НЕ одобряю +1 одобряю!


Консультирует lamed (Академик):

Здравствуйте, Cimus.

select
what,
count(vote) as CountVote,
sum(vote) as SumVote,
avg(vote) as rating
from cms_rating
group by what

Использовать слова типа 'sum' (в апострофах) очень не советую, хотя работать-то будет, но за этим словом закреплен и зарезервированный смысл. Остальные имена не являются зарезервированными и сформированы по всем правилам имен SQL, поэтому (и в Мануале, кстати) они используются без апострофов

Консультировал: lamed (Академик)
Дата отправки: 22.09.2009, 20:01

5
Спасибо!
-----
Дата оценки: 22.09.2009, 23:53

Рейтинг ответа:

НЕ одобряю +1 одобряю!

Консультация # 104239:

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

Дата отправки: 04.10.2007, 08:25
Вопрос задал: Акаев Бахадыр
Всего ответов: 1
Страница онлайн-консультации »


Консультирует white:

Здравствуйте, Акаев Бахадыр!

Для SQL2000 (с 2005 не знаком)
Придется напрямую работать с системной таблицей sysxlogins
Считал на 1 сервере и сравнил на 2.
Отсутствующих добавил, лишних удалил.

Консультировал: white
Дата отправки: 04.10.2007, 16:48
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 66007:

Здраствуйте!
есть такая проблема, веду одновременно 2 базы (рабочая и бухгалтерская), нужно что бы при создании нового контраагента в рабочей базе в бухгалтерской тоже он вносился, т.е. что бы список контрагентов совпадал, и чтобы он правился одновременно в обоих базах

Дата отправки: 07.12.2006, 21:30
Вопрос задал: Нестеров Д. В.
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Jadd:

Здравствуйте, Нестеров Д. В.!
Создаете триггер на Insert и Update для той таблицы, значения которой хотите отслеживать. А дальше из триггера передаете в другую базу значения через Insert-запрос. Обращение к другой базе в формате БАЗА.dbo.Таблица

Успехов.

Консультировал: Jadd
Дата отправки: 07.12.2006, 21:52
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное