2012-02-27 1 views
0

私は自分のMySQLデータベースから取り出したデータを集約しようとしています。MySQL - カウントを数えますか?

SELECT `PUID`,`DROID_V`,`SIG_V`,`SPEED`, 
COUNT(distinct IF(sourcelist.hasExtension=1,NAME,NULL)) as Ext, 
COUNT(distinct IF(sourcelist.hasExtension=0,NAME,NULL)) as NoExt, 
COUNT(distinct NAME) as `All` 
FROM sourcelist, main_small 
WHERE sourcelist.SourcePUID = 'My_Variable' AND main_small.NAME = sourcelist.SourceFileName 
GROUP BY `PUID`,`DROID_V`,`SIG_V`,`SPEED` ORDER BY `DROID_V` ASC, `SIG_V` ASC, `SPEED` 

そして、この結果をカウントする方法があった場合、私は疑問に思ったので、私は私のような何か表示されるでしょう新しいテーブル加えることができます:私が使用している

Queryがある

すべてをsourcelist.SourcePUID = 'My_Variable' AND main_small.NAME = sourcelist.SourceFileName

このように、別のPUID、(別個のDROID_Vのカウント)、(別個のSig_Vのカウント)、(NAMEの合計ヒット数)私はSQLにはあまりよく似ていません!

ソーステーブル:

CREATE TABLE `t1` (
`DROID_V` int(1) DEFAULT NULL, 
`Sig_V` varchar(7) DEFAULT NULL, 
`SPEED` varchar(4) DEFAULT NULL, 
`ID` varchar(7) DEFAULT NULL, 
`PARENT_ID` varchar(10) DEFAULT NULL, 
`URI` varchar(10) DEFAULT NULL, 
`FILE_PATH` varchar(68) DEFAULT NULL, 
`NAME` varchar(17) DEFAULT NULL, 
`METHOD` varchar(10) DEFAULT NULL, 
`STATUS` varchar(14) DEFAULT NULL, 
`SIZE` int(10) DEFAULT NULL, 
`TYPE` varchar(10) DEFAULT NULL, 
`EXT` varchar(4) DEFAULT NULL, 
`LAST_MODIFIED` varchar(10) DEFAULT NULL, 
`EXTENSION_MISMATCH` varchar(32) DEFAULT NULL, 
`MD5_HASH` varchar(10) DEFAULT NULL, 
`FORMAT_COUNT` varchar(10) DEFAULT NULL, 
`PUID` varchar(15) DEFAULT NULL, 
`MIME_TYPE` varchar(24) DEFAULT NULL, 
`FORMAT_NAME` varchar(10) DEFAULT NULL, 
`FORMAT_VERSION` varchar(10) DEFAULT NULL, 
`INDEX` int(11) NOT NULL AUTO_INCREMENT, 
PRIMARY KEY (`INDEX`) 
) ENGINE=MyISAM AUTO_INCREMENT=960831 DEFAULT CHARSET=utf8 

例レコード:

5;"v37";"slow";"10266";;"file:";"V1-FL425817.tif";"V1-FL425817.tif";"BINARY_SIG";"MultipleIdenti";"20603284";"FILE";"tif";"2008-11-03";;;;"fmt/7";"image/tiff";"Tagged Ima";"3";"191977" 
5;"v37";"slow";"10268";;"file:";"V1-FL425817.tif";"V1-FL425817.tif";"BINARY_SIG";"MultipleIdenti";"20603284";"FILE";"tif";"2008-11-03";;;;"fmt/8";"image/tiff";"Tagged Ima";"4";"191978" 
5;"v37";"slow";"10269";;"file:";"V1-FL425817.tif";"V1-FL425817.tif";"BINARY_SIG";"MultipleIdenti";"20603284";"FILE";"tif";"2008-11-03";;;;"fmt/9";"image/tiff";"Tagged Ima";"5";"191979" 
5;"v37";"slow";"10270";;"file:";"V1-FL425817.tif";"V1-FL425817.tif";"BINARY_SIG";"MultipleIdenti";"20603284";"FILE";"tif";"2008-11-03";;;;"fmt/10";"image/tiff";"Tagged Ima";"6";"191980" 

答えて

1

確かにちょうど

Select Count(*) From (Select * From SomeTable) adummynamesoSqlParserDoesntgetupset 

のようなものがそうFROM後の括弧内にクエリを置けばいいが、それに一意の名前を付け、テーブルやビューのように扱うことができます。

+0

ああ!クール!それは本当に便利です、ありがとう!私は探索をするつもりです。 – Jay