Создать таблицу из другого набора результатов и другого условия - PullRequest
0 голосов
/ 29 марта 2011

Если у меня есть таблица (ORDER), скажем, что это так:

ORDER

typeid  | price  | status | 
  7        8000      3 
  7        8000      3 
  7        8000      3 
  8        8000      3 
  8        8000      8 
  7        8000      8 

Я бы хотел получить 3 результата из таблицы выше:

select count(STATUS) AS TRAFFIC WHERE TYPEID = 7;

AND

sum(price) AS REVENUE, count(STATUS) AS SUBSCRIBER FROM CMSORDER WHERE TYPEID = 7 AND status = 8 ;

Какой синтаксис для объединения 2 кода выше?Так что я могу получить эту таблицу:

traffic  | revenue  | subscriber
  4         8000          1 

Кто-нибудь может мне помочь?

Ответы [ 3 ]

0 голосов
/ 29 марта 2011

Как я понимаю, это может быть так -

SELECT count(if(typeid = 7, 1, null)) TRAFFIC,
  sum(if(TYPEID = 7 AND status = 8, price, null)) AS REVENUE,
  count(if(TYPEID = 7 AND status = 8, STATUS, null)) AS SUBSCRIBER
FROM
  CMSORDER
0 голосов
/ 30 марта 2011
SELECT
  COUNT(status) AS TRAFFIC,
  SUM  (CASE status WHEN 8 THEN price  END) AS REVENUE,
  COUNT(CASE status WHEN 8 THEN status END) AS SUBSCRIBER
FROM CMSORDER
WHERE typeid = 7
0 голосов
/ 29 марта 2011

Волшебство, которое вы ищете, это предложение GROUP BY:

select count(ORDER.STATUS) AS TRAFFIC 
sum(ORDER.price) AS REVENUE, 
count(ORDER.STATUS) AS SUBSCRIBER 
FROM CMSORDER, ORDER 
WHERE CMSORDER.TYPEID = ORDER.TYPEID 
AND CMSORDER.status = 8 
AND ORDER.TYPEID = 7
GROUP BY ORDER.STATUS;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...