Jump to content

[SOLVED] combining two queries.


stelthius

Recommended Posts

Tested it on a test table I have. Speed-wise, it didn't seem to matter.

 

bools = 'bunch of odd lists'... it's a test table. I have a bunch of random columns with random data.

 

mysql> SELECT SUM( if(paid='Y',1,0 )) AS numpaid, SUM( if(userid < 50, 1,0) ) AS numid FROM bools;
+---------+-------+
| numpaid | numid |
+---------+-------+
|    7586 |  9095 | 
+---------+-------+
1 row in set (0.00 sec)

mysql> SELECT (SELECT COUNT(paid) FROM bools WHERE paid='Y') AS numpaid, (SELECT COUNT(userid) FROM bools WHERE userid < 50) AS numid;
+---------+-------+
| numpaid | numid |
+---------+-------+
|    7586 |  9095 | 
+---------+-------+
1 row in set (0.01 sec)

mysql> SELECT SUM( if(paid='Y',1,0 )) AS numpaid, SUM( if(userid < 50, 1,0) ) AS numid FROM bools;
+---------+-------+
| numpaid | numid |
+---------+-------+
|    7586 |  9095 | 
+---------+-------+
1 row in set (0.01 sec)

mysql> SELECT (SELECT COUNT(paid) FROM bools WHERE paid='Y') AS numpaid, (SELECT COUNT(userid) FROM bools WHERE userid < 50) AS numid;
+---------+-------+
| numpaid | numid |
+---------+-------+
|    7586 |  9095 | 
+---------+-------+
1 row in set (0.01 sec)

mysql> SELECT SUM( if(paid='Y',1,0 )) AS numpaid, SUM( if(userid < 50, 1,0) ) AS numid FROM bools;
+---------+-------+
| numpaid | numid |
+---------+-------+
|    7586 |  9095 | 
+---------+-------+
1 row in set (0.00 sec)

mysql> SELECT (SELECT COUNT(paid) FROM bools WHERE paid='Y') AS numpaid, (SELECT COUNT(userid) FROM bools WHERE userid < 50) AS numid;
+---------+-------+
| numpaid | numid |
+---------+-------+
|    7586 |  9095 | 
+---------+-------+
1 row in set (0.00 sec)

 

I would choose MadTechie's. It's much more elegant.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.