Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Посчитать сколько одинаковых значений поля... (Саша) 07/06/2016 - 21:31:16
      Re: Посчитать сколько одинаковых значений поля... (Akina) 08/06/2016 - 09:56:13
      Re: Посчитать сколько одинаковых значений поля... (Саша) 08/06/2016 - 17:43:08
      Re: Посчитать сколько одинаковых значений поля... (Akina) 08/06/2016 - 18:12:55
      Re: Посчитать сколько одинаковых значений поля... (Саша) 08/06/2016 - 23:24:16
      Re: Посчитать сколько одинаковых значений поля... (Саша) 09/06/2016 - 00:06:00
      Re: Посчитать сколько одинаковых значений поля... (Akina) 09/06/2016 - 11:06:10
      Re: Посчитать сколько одинаковых значений поля... (Саша) 12/06/2016 - 01:38:03

> Original message text:
> From: Саша - 07/06/2016 - 21:31:16
> Subject:Посчитать сколько одинаковых значений поля...
> -----------------
> Привет всем. Ломаю голову как мне заставить MySQL отработать что бы не городить огород в php.
>
> [code=SQL]
> SELECT
> t1.id,
> t1.user_id,
> nickname,
> imageurl,
> t1.title,
> competition_id,
> /*
> (
> SELECT COUNT(id)
> FROM cms_competition_work t6
> WHERE vote=(
> SELECT MAX(vote)
> FROM cms_competition_work t7
> WHERE t6.competition_id=t7.competition_id
> )
> ) winner
> */
> FROM cms_competition_work t1
> JOIN cms_users t3 ON t3.id = t1.user_id
> JOIN cms_user_profiles t4 ON t4.user_id = t1.user_id
> JOIN cms_competition t5 ON t5.id = t1.competition_id
> WHERE vote=(
> SELECT MAX(vote)
> FROM cms_competition_work t2
> WHERE t1.competition_id=t2.competition_id
> )
> LIMIT 6
> [/code]
>
> Есть задача, вывести на морду сайта 6 победителей конкурсов. Все с одной стороны просто есть приз в каждом конкурсе есть победитель. Победитель получил приз. Все что кроме закомментированого, работает как надо. Но вот оказалось что в конкурсе может победить 2 или даже 3 человека, и надо поделить баллы на это количество человек. Кусок кода в коменте мне выдает общее количество призеров.. А как бы мне получить количество победителей в каждом competition_id?
> Помогите пожалуста. Есть вариант в цикле попробовать разобрать совпадение ключей массива, но что-то я там пробовал вообще ни каких мыслей как это сделать... array_count_values мне не помог. Или я просто не умею им пользоваться.
>


From: Саша - 08/06/2016 - 23:24:16
Subject:Посчитать сколько одинаковых значений поля...
-----------------
Я попробовал, мне выдает всех участников сколько есть. Я видимо забыл написать что в таблице считается победитель по полю vote в таблице cms_competition_work где больше голосов. И голосов может быть одинаково у нескольких человек

SELECT t1.title, t1.bank, t1.bank/WinnersCount.Cnt PointsPerWinner
FROM cms_competition t1,
(SELECT t2.competition_id, COUNT(t2.id) Cnt
FROM cms_competition_work t2
WHERE vote=(
SELECT MAX(vote)
FROM cms_competition_work t3
WHERE t2.competition_id=t3.competition_id
)
GROUP BY t2.competition_id) WinnersCount
WHERE t1.id = WinnersCount.competition_id

Добавив условие он стал правильно показывать сколько баллов получает победитель... если их 2 в конкурсе, то делит на 2 если 3 то на три... Тут все здорово, кстати а можно округлить сумму до целого в меньшую сторону?:-) На php просто а тут есть ли такое?

Но в вашем запросе изначально не правильный подход. Мне-то победителей надо вывести а не сумму приза.. В моем запросе в первом вопрос выводит именно победителей. Мне там хотелось просто как-то добавить что-то что бы еще количество победителей одного конкурса посчитало. Я бы на php просто поделил банк на количество.. а здесь выводится банк и скольк получит один из победителей.. вообщем не умею походу я вопросы спрашивать.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
43573



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |