Как получить общее количество записей для каждой строки??

PaySitePass

Пользователь
Регистрация
25.01.12
Сообщения
2
Реакции
0
Баллы
1
Я очень озадачен этим вопросом. У меня на сайте есть раздел, где пользователи могут участвовать в различных конкурсных рисунках, у меня есть 2 таблицы: 1 для самих призов и 1 для заявок.

Я могу получить призы и ВСЕГО заявок, но мне трудно понять, как включить записи конкретных пользователей в каждый розыгрыш. Вот пример моих таблиц (которые можно изменить, они больше нигде на сайте не используются).

призы (название таблицы)
Как получить общее количество записей для каждой строки??
Prize_id (ключ), призстатус, имяприза, изображение_приза
--------------- ------------ ------------ -----------
1, 1, iPhone, image.jpg
2, 1, Рюкзак, image2.jpg
3, 1, Подарочная карта, image3.jpg
4, 1, Свеча, image4.jpg
5, 1, Что-то, image5.jpg

записи (имя таблицы)

входнойид (ключ), призовойид, пользовательский_ид, результат
---------------- --------- --------- ----------
1, 1, 1000, 1
2, 1, 1000, 1
3, 1, 1001, 1
4, 2, 1000, 1
5, 1, 1000, 1

Это мой текущий оператор SQL:

ВЫБЕРИТЕ призы.prize_id, призы.имяприза, призы.призизображение, СУММА(результат) КАК общее количествозаписей ИЗ призов ОСТАВЬТЕ ВНЕШНИЕ ОБЪЕДИНИТЕ записи ON (призы.призид = записи.призид) ГДЕ призы.призстатус = 1 ГРУППИРУЙТЕ ПО призам.prize_id;

В идеале хотелось бы иметь 1 заявление со всей информацией. Я использую СУММУ Хайме, чтобы получить общее количество записей, это достаточно просто, но я не могу придумать, как получить количество записей для каждой строки, которую ввел пользователь. Например, если идентификатор пользователя был 1000:

Prize_id, имяприза, изображениеприза, всегозаписей, записейпользователей
--------- ------------- ------------- -------------- --------------
1, iPhone, image.jpg, 4, 3
2, Рюкзак, image2.jpg, 1, 1
3, Подарочная карта, image3.jpg, 0, 0
4, Свеча, image4.jpg, 0, 0
5, Что-то, image5.jpg, 0, 0

Любая помощь будет принята с благодарностью!!
 

spoker1

Пользователь
Регистрация
05.03.12
Сообщения
2
Реакции
0
Баллы
1
Привет

Я совсем не уверен в конструкции вашей базы данных, но оставлю это для другого поста. Я внес пару изменений, и я просто не мог оставить все как есть.

Проверить http://sqlfiddle.com/#!9/ad2910/4 и поиграйтесь с запросами


Код:
select `entries`.`id`, `contests`.`prize_name`, `entries`.`outcome`, `entries`.`entry_image`
from entries
inner join contests on entries.contest_id = contests.id
where user_id = 1000;
select contests.id, contests.prize_name, contests.status, entries.user_id,
count(entries.id) as counter,
case when sum(entries.outcome) > 0 then 'winner' else '' end as outcome
from entries
inner join contests on entries.contest_id = contests.id
group by contests.id, entries.user_id
order by contests.status, contests.prize_name, entries.user_id;

Код (sql): и

CREATE TABLE IF NOT EXISTS `contests` ( `id` int(6) NOT NULL, `status` varchar(20) NOT NULL, `prize_name` varchar(200) NOT NULL, `prize_image` varchar(200) not null, PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8; INSERT INTO `contests` (`id`, `status`, `prize_name`, `prize_image`) VALUES ('1', 'Finished', 'iPhone', 'image1.jpg'), ('2', 'Active', 'Backpack', 'image2.jpg'), ('3', 'Active', 'Gift Card', 'image3.jpg'), ('4', 'Draft', 'Candle', 'image4.jpg'), ('5', 'Draft', 'Something', 'image5.jpg'); CREATE TABLE IF NOT EXISTS `entries` ( `id` int(6) NOT NULL, `contest_id` int(6) NOT NULL, `user_id` int(6) NOT NULL, `outcome` varchar(200) not null, `entry_image` varchar(200) null, PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8; INSERT INTO `entries` (`id`, `contest_id`, `user_id`, `outcome`, `entry_image`) VALUES ('1', 1, 1000, 0, 'entry1.jpg'), ('2', 1, 1000, 1, 'entry2.jpg'), ('3', 1, 1001, 0, 'entry3.jpg'), ('4', 2, 1000, 0, 'entry4.jpg'), ('5', 2, 1001, 1, 'entry5.jpg'), ('6', 3, 1002, 0, 'entry6.jpg'), ('7', 3, 1003, 0, 'entry7.jpg');
Код (sql):
 
Сверху Снизу