4 запроса к одной таблице, лучше? - PullRequest
3 голосов
/ 12 августа 2010

В настоящее время я делаю один запрос, с 3 подзапросами,
все запросы находятся в одной таблице,
все запросы имеют разные условия, где

Я думал о создании группы, однакоэто разрушит SUM ()

вот запрос

SELECT SUM(club) AS club, 
(SELECT COUNT(id) FROM action_6_members WHERE SUBSTR(CODE, 1, 1) = '9') AS 5pts,
(SELECT COUNT(id) FROM action_6_members WHERE SUBSTR(CODE, 1, 1) = 'A') AS 10pts,
(SELECT COUNT(id) FROM action_6_members WHERE SUBSTR(CODE, 1, 1) NOT IN('9', 'A')) AS General
FROM action_6_members;

вот объяснение

id  select_type  table             type  rows  Extra        
1   PRIMARY      action_6_members  ALL   1471               
4   SUBQUERY     action_6_members  ALL   1471  Using where  
3   SUBQUERY     action_6_members  ALL   1471  Using where  
2   SUBQUERY     action_6_members  ALL   1471  Using where  

Ответы [ 2 ]

3 голосов
/ 12 августа 2010

Использование:

SELECT SUM(club) AS club, 
       SUM(CASE WHEN SUBSTR(CODE, 1, 1) = '9' THEN 1 ELSE 0 END) AS 5pts,
       SUM(CASE WHEN SUBSTR(CODE, 1, 1) = 'A' THEN 1 ELSE 0 END) AS 10pts,
       SUM(CASE WHEN SUBSTR(CODE, 1, 1) NOT IN('9', 'A') THEN 1 ELSE 0 END) AS General
  FROM action_6_members;
0 голосов
/ 12 августа 2010

Настройте это:

SELECT SUM(club) as club, COUNT(1) FROM action_6_members GROUP BY SUBSTR(CODE, 1, 1)
...