0
두 문 대신 한 문에서 두 값을 선택하려고합니다. 첫 번째 진술 문은 ID가 18 인 특정 콘테스트에서 몇 개의 항목이 차지했는지 계산합니다. 두 번째 문은 해당 콘테스트의 총 상금을 계산합니다.SQL : 하위 쿼리 지원
쿼리 1 : 2
SELECT SUM(quantity) FROM prizes WHERE contest=18
내가 가지고 두 그래서 그 비교시 서버 측 행동에 그들을 비교할 수 원하는
SELECT
COUNT(*) FROM entries
WHERE entries.contest=18
AND entries.won=1
쿼리 .. 그래서 우리는이 있다면 말 18 대회 및 제 18 회 대회 인 5 상품의 총 수량을 수상 3 진입, 무언가를 ...
스키마 :
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
테이블이 없기 때문에 사용자 이름 등이 항목 행에 저장되는 이유는 중복되지 않습니다. 쿼리로
이 최고, 감사합니다. 방금 누가 내가 어떤 상을 탔는지 추적하지 않는다는 것을 깨달 았습니다. 단지 참가자가 이겼거나 그렇지 않은 경우에만 기본 설정이 '0'입니다. '원'을 '1'대신 상금으로 설정해야합니까? '? –
흠, 단지 0이나 1이 pk가 될 수 있다고 생각하고 있었고,'id' pk가 2에서 시작하도록 상금 테이블을 업데이트 할 수도있었습니다. –
@meder : "win 대신 "필드에는 nullable 인"prize_id "필드가있을 수 있습니다. Null 값은 영 (0)과 같은 매직 넘버가 아닌 비 승리 (non-win)에 대한보다 명확한 지표가됩니다. – Guffa