|
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,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
43573
|
|