954,600 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Select SUM (All Fields in table)

I have a table with 32 fields.
Is there a shorter way - [ other than select sum(field1 + field2 + ... Field32] to get the sum of all fields for a date range.
I know, I know, once I create the query I can save it for future use but I have over 60 tables.

I just want to find [and maybe delete] all the entries that have a zero value for the sum of all fields.

Thanks

mayfieldjr
Newbie Poster
4 posts since Jan 2009
Reputation Points: 10
Solved Threads: 0
 

I think you can achive this by using INFORMATION_SCHEMA tables.

mwasif
Posting Whiz
315 posts since Dec 2007
Reputation Points: 29
Solved Threads: 48
 

schema tables? How? Where? I'll start reseaching that.
Thanks.

mayfieldjr
Newbie Poster
4 posts since Jan 2009
Reputation Points: 10
Solved Threads: 0
 

Hello mayfieldjr,

Here is a sample code to get the SUM of all INT fields in a specific table. You must have at least MySQL 5.0 to run this query.

SET @qry = (SELECT CONCAT('SELECT SUM(',GROUP_CONCAT(INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME SEPARATOR '+'), ')
 FROM ',INFORMATION_SCHEMA.COLUMNS.TABLE_NAME,' 
 WHERE date_column BETWEEN \'2008-01-01\' AND \'2008-12-31\' ')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = 'table_name'
AND INFORMATION_SCHEMA.COLUMNS.DATA_TYPE = 'int');
PREPARE stmt FROM @qry;
EXECUTE stmt;


If you just want to see the resultant query, use the below code.

SET @qry = (SELECT CONCAT('SELECT SUM(',GROUP_CONCAT(INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME SEPARATOR '+'), ')
 FROM ',INFORMATION_SCHEMA.COLUMNS.TABLE_NAME,' 
 WHERE date_column BETWEEN \'2008-01-01\' AND \'2008-12-31\' ')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = 'table_name'
AND INFORMATION_SCHEMA.COLUMNS.DATA_TYPE = 'int');
SELECT @qry;


Have a good day!

mwasif
Posting Whiz
315 posts since Dec 2007
Reputation Points: 29
Solved Threads: 48
 

You learn something new every day.
Thank you. Brilliant!!

I am new to this forum. Do I now [somehow] close this thread?
How?
Hello mayfieldjr,

Here is a sample code to get the SUM of all INT fields in a specific table. You must have at least MySQL 5.0 to run this query.

SET @qry = (SELECT CONCAT('SELECT SUM(',GROUP_CONCAT(INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME SEPARATOR '+'), ')
 FROM ',INFORMATION_SCHEMA.COLUMNS.TABLE_NAME,' 
 WHERE date_column BETWEEN \'2008-01-01\' AND \'2008-12-31\' ')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = 'table_name'
AND INFORMATION_SCHEMA.COLUMNS.DATA_TYPE = 'int');
PREPARE stmt FROM @qry;
EXECUTE stmt;


If you just want to see the resultant query, use the below code.

SET @qry = (SELECT CONCAT('SELECT SUM(',GROUP_CONCAT(INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME SEPARATOR '+'), ')
 FROM ',INFORMATION_SCHEMA.COLUMNS.TABLE_NAME,' 
 WHERE date_column BETWEEN \'2008-01-01\' AND \'2008-12-31\' ')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = 'table_name'
AND INFORMATION_SCHEMA.COLUMNS.DATA_TYPE = 'int');
SELECT @qry;


Have a good day!

mayfieldjr
Newbie Poster
4 posts since Jan 2009
Reputation Points: 10
Solved Threads: 0
 

"Mark as Solved" bellow last post...

peter_budo
Code tags enforcer
Moderator
15,436 posts since Dec 2004
Reputation Points: 2,806
Solved Threads: 902
 

This question has already been solved

Post: Markdown Syntax: Formatting Help
You