|
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: Саша - 09/06/2016 - 00:06:00
Subject:Посчитать сколько одинаковых значений поля...
-----------------
SELECT
t1.id,
t1.user_id,
nickname,
imageurl,
t1.title,
t1.competition_id,
WinnersCount.Cnt
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,
(
SELECT t6.competition_id, COUNT(t6.id) Cnt
FROM cms_competition_work t6
WHERE vote=(
SELECT MAX(vote)
FROM cms_competition_work t7
WHERE t6.competition_id=t7.competition_id
)
GROUP BY t6.competition_id) WinnersCount
WHERE vote=(
SELECT MAX(vote)
FROM cms_competition_work t2
WHERE t1.competition_id=t2.competition_id
)
AND t5.id = WinnersCount.competition_id
ORDER BY t1.competition_id
LIMIT 6
Похоже раоботает. Спасибо. Сейчас куча тестов, а там видно будет.
Но только я не понимаю как это работает.. Вот свои запросы я понимаю... А как тут подзапрос после FROM ?? это типа джойна получается только более гибкий чтоли??
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
43573
|
|