Я пытаюсь выбрать два значения в одном выражении вместо двух операторов. Первое утверждение подсчитывает количество выигранных заявок для конкретного конкурса с идентификатором 18. Второй оператор подсчитывает общее количество призов для этого конкурса.SQL: помощь подзапроса
Запрос 1:
SELECT
COUNT(*) FROM entries
WHERE entries.contest=18
AND entries.won=1
Query 2
SELECT SUM(quantity) FROM prizes WHERE contest=18
Я хочу иметь оба, чтобы я мог сравнить их на стороне сервера и действовать при этом сравнении .. Так что, если мы должны были сказать, 3 участника, выигравших 18-й конкурс, и общее количество призов 18-го конкурса - 5, сделать что-то ...
Схема:
CREATE TABLE `entries` (
`id` int(2) unsigned NOT NULL auto_increment,
`message_id` bigint(8) unsigned default NULL,
`user` int(2) unsigned default NULL,
`username` varchar(50) NOT NULL,
`contest` int(2) unsigned default NULL,
`message` text,
`icon` text,
`twitter_url` text,
`follower` int(2) unsigned default NULL,
`entry_date` timestamp NOT NULL default '0000-00-00 00:00:00',
`won` int(1) default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
CREATE TABLE `prizes` (
`id` int(2) unsigned NOT NULL auto_increment,
`name` varchar(25) NOT NULL,
`contest` int(2) NOT NULL,
`quantity` int(2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8
Нет таблицы users
, потому что я контролирую записи, и я уверен, что я не получу дубликатов, поэтому имя пользователя и т. Д. Сохраняется для строки ввода.
Awesome, спасибо. Я просто понял, что я действительно не отслеживаю, кто выиграл какой приз, а только, только если выиграл или выиграл участник, 'won' по умолчанию равен 0. Должен ли я установить' won' как pk призов вместо '1 '? –
Хм, просто думал, что 0 или 1 может быть pk, я мог бы также обновить таблицу призов, так что 'id' pk начинается с 2. Было бы здорово, если бы вы могли перезвонить. –
@meder: Вместо« выиграть » «поле, вы можете иметь поле« priority_id », которое может быть обнулено. Нулевое значение было бы более очевидным показателем для не-выигрыша, чем магическое число, такое как нуль. – Guffa