0
我想在一个语句中选择两个值而不是两个语句。第一个陈述是计算具有18的特定比赛获胜的条目数。第二个陈述计算该比赛的总奖金数量。SQL:子查询帮助
查询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
表,因为我控制的条目,我敢肯定,我不会得到任何重复,所以这就是为什么用户名等存储的条目行。
真棒,谢谢。我只是意识到,我并没有真正追踪谁赢得了什么奖项,而只是当参赛者赢了或不赢时,“won”默认为0.我应该将“won”设置为奖金的pk而不是“1” '? – 2009-11-02 09:34:58
嗯,只是觉得0或1可能是pk,我也可以更新奖品表,所以'id' pk从2开始。如果你可以参加,这将是非常棒的。 – 2009-11-02 09:41:41
@meder:而不是“赢“字段,你可以有一个可以为空的”prize_id“字段。对于非赢局来说,空值将是一个更明显的指标,而不是一个像零的幻数。 – Guffa 2009-11-02 09:51:48