2

how to do multiple COUNT(*) SELECTS from the same table in one ...

$query = "SELECT count(*) FROM content_form WHERE read_flag = 0 ";  
$query = "SELECT count(*) FROM content_form WHERE read_flag = 1 "; 
$query = "SELECT count(*) FROM content_form WHERE read_flag = 0 ";
Xatenev
  • 6,383
  • 3
  • 18
  • 42
Aska Sb
  • 91
  • 2
  • 10
  • 1
    Query 1 and 3 are exactly equivalent. Take a look at http://stackoverflow.com/questions/12789396/how-to-get-multiple-counts-with-one-sql-query – Xatenev Dec 02 '16 at 10:12

3 Answers3

3

Try this

SELECT read_flag,count(read_flag) as cnt FROM content_form WHERE read_flag IN (0,1,....) GROUP BY read_flag
PravinS
  • 2,640
  • 3
  • 21
  • 25
2
    $query = "SELECT sum(Case when read_flag=0 then 1 else 0 end) as ReadFlag0Cnt, 
                     sum(Case when read_flag=1 then 1 else 0 end) as ReadFlag1Cnt
              FROM content_form";
You can use case statement
Akshey Bhat
  • 8,227
  • 1
  • 20
  • 20
  • 1
    @AkshayBhat - Instead of COUNT, it should be SUM - $query = "SELECT SUM(Case when read_flag=0 then 1 else 0 end) as ReadFlag0Cnt, SUM(Case when read_flag=1 then 1 else 0 end) as ReadFlag1Cnt FROM content_form"; – Ganesh Gadge Dec 11 '17 at 10:43
2

You may try this:

$query = "select (SELECT count(*) FROM content_form WHERE read_flag = 0) 
as flag0, (SELECT count(*) FROM content_form WHERE read_flag = 1) as flag1,
(SELECT count(*) FROM content_form WHERE read_flag = 0) as flag0) from content_form";
Smita Ahinave
  • 1,901
  • 7
  • 23
  • 42
Alberto
  • 1,423
  • 18
  • 32