0

このクエリを1つにマージして、日付ごとに2つの値(estado =1の場合は"scount_atp"、estado =4の場合は"scount_xxx")を返します。

SELECT DATE_FORMAT(FROM_UNIXTIME(fecha),"%m-%d-%Y") as sdate, COUNT(id) as scount_atp FROM entradas WHERE estado = '1' AND fecha <= UNIX_TIMESTAMP(NOW()) AND fecha >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 YEAR)) GROUP BY sdate

SELECT DATE_FORMAT(FROM_UNIXTIME(fecha),"%m-%d-%Y") as sdate, COUNT(id) as scount_xxx FROM entradas WHERE estado = '4' AND fecha <= UNIX_TIMESTAMP(NOW()) AND fecha >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 YEAR)) GROUP BY sdate

私はMySQLの初心者なので、これが基本的すぎるとすみません...

助けてくれてありがとう!

4

2 に答える 2

4
SELECT 
  DATE_FORMAT(FROM_UNIXTIME(fecha),"%m-%d-%Y") as sdate, 
  SUM(IF(estado = '1',1,0)) as scount_atp,
  SUM(IF(estado = '4',1,0)) as scount_xxx
FROM entradas 
WHERE estado IN('1','4')
  AND fecha <= UNIX_TIMESTAMP(NOW()) 
  AND fecha >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 YEAR)) 
GROUP BY sdate

ここに無関係なものを追加しましょう。estado列がタイプの場合、-の代わりにINT書き込みたい場合があります。または、比較のためにint列を文字列に変換する全表スキャンで終了する場合があります。1'1'

于 2012-06-26T13:57:27.473 に答える
2

私は過去に似たようなことをしました、これは私のために働きました:

SELECT 
   DATE_FORMAT(FROM_UNIXTIME(fecha),"%m-%d-%Y") as sdate, 
   COUNT(IF(estado = '1', 1, NULL)) as scount_atp, 
   COUNT(IF(estado = '4', 1, NULL)) as scount_xxx 
FROM entradas 
WHERE 
   fecha <= UNIX_TIMESTAMP(NOW()) 
   AND 
   fecha >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 YEAR))
GROUP BY sdate
于 2012-06-26T14:01:33.883 に答える