|
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 - 17:43:08
Subject:Посчитать сколько одинаковых значений поля...
-----------------
Не понял про новый запрос из старого...
У меня база конкурсов t5.. В нем есть поле суммы баллов которую получит победитель.. Но вот если победителей два... мне надо просто сумму поделить на 2.. все же просто.
Array
(
[id] => 25
[user_id] => 2
[nickname] => Василий
[imageurl] =>
[title] => Работа 1
[competition_id] => 1 /// это id конкурса
[winner] => 5 /// это то что выдает закомментированная часть выше
)
Array
(
[id] => 20
[user_id] => 3
[nickname] => Федор
[imageurl] =>
[title] => Работа
[competition_id] => 2 /// это id конкурса
[winner] => 5 /// это то что выдает закомментированная часть выше
)
Array
(
[id] => 24
[user_id] => 1
[nickname] => Иван
[imageurl] =>
[title] => Название работы
[competition_id] => 2 /// это id конкурса
[winner] => 5 /// это то что выдает закомментированная часть выше
)
Array
(
[id] => 23
[user_id] => 4
[nickname] => Елена
[imageurl] =>
[title] => Самая любимая!!
[competition_id] => 3 /// это id конкурса
[winner] => 5 /// это то что выдает закомментированная часть выше
)
Array
(
[id] => 22
[user_id] => 5
[nickname] => Тимофей
[imageurl] =>
[title] => Просто работа
[competition_id] => 4 /// это id конкурса
[winner] => 5 /// это то что выдает закомментированная часть выше
)
Array
(
[id] => 21
[user_id] => 6
[nickname] => Слава
[imageurl] =>
[title] =>Работа на конкурс!!
[competition_id] => 3 /// это id конкурса
[winner] => 5 /// это то что выдает закомментированная часть выше
)
Василий единственный победитель конкурса [competition_id] => 1
Федор и Иван победители конкурса [competition_id] => 2
Елена и Слава победители конкурса [competition_id] => 3
В запросе которыз закоментирован мне показывает всех победителей конкурсов..
[winner] => 5 а мне хотелось бы получить у каждого количество победителей в [competition_id]
DROP TABLE IF EXISTS `#__competition`;
CREATE TABLE `#__competition` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`price` float DEFAULT '0',
`bank` float DEFAULT '0',
`category_id` int(11) DEFAULT NULL,
`status` char(1) DEFAULT '1',
`published` char(1) DEFAULT '0',
`title` varchar(255) DEFAULT NULL,
`description` text,
`start` datetime DEFAULT '0000-00-00 00:00:00',
`stop` datetime DEFAULT '0000-00-00 00:00:00',
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `category_id` (`category_id`),
KEY `published` (`published`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `#__competition_category`;
CREATE TABLE `#__competition_category` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `#__competition_vote`;
CREATE TABLE `#__competition_vote` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(11) DEFAULT NULL,
`work_id` int(11) DEFAULT NULL,
`created` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `work_id` (`work_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `#__competition_work`;
CREATE TABLE `#__competition_work` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(11) DEFAULT NULL,
`competition_id` int(11) DEFAULT NULL,
`text` text,
`title` varchar(255) DEFAULT NULL,
`audio` int(11) DEFAULT '0',
`video` int(11) DEFAULT '0',
`image` int(11) DEFAULT '0',
`pubdate` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`view` int(11) DEFAULT '0',
`vote` int(11) DEFAULT '0',
`up` int(11) DEFAULT '0',
`dateup` timestamp NULL DEFAULT '0000-00-00 00:00:00',
`preview` char(1) DEFAULT '0',
PRIMARY KEY (`id`),
KEY `competition_id` (`competition_id`),
KEY `vote` (`vote`),
FULLTEXT KEY `title` (`title`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
43573
|
|