SQL: помощь подзапросам - PullRequest
0 голосов
/ 02 ноября 2009

Я пытаюсь ВЫБРАТЬ два значения в одном утверждении вместо двух утверждений. Первое утверждение подсчитывает, сколько заявок выиграно за конкретный конкурс с идентификатором 18. Второе утверждение подсчитывает общее количество призов за этот конкурс.

Запрос 1:

SELECT 

COUNT(*) FROM entries 

WHERE entries.contest=18

AND entries.won=1

Запрос 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 нет, потому что я контролирую записи, и я почти уверен, что не получу дубликатов, поэтому имя пользователя и т. Д. Сохраняется для строки ввода.

1 Ответ

2 голосов
/ 02 ноября 2009

Поскольку запросы не имеют ничего общего, вы должны использовать два подзапроса, чтобы получить их с одинаковым результатом:

select
  (select count(*) from entries where contest = 18 and won = 1) as wins,
  (select sum(quantity) from prizes where contest = 18) as quantity
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...