close ad
 
Important WebAssist Announcement
open ad
View Menu

Technical Support Forums

Free, outstanding support from WebAssist and your colleagues

rating

Display total record count where date column is between two dates

Thread began 2/08/2015 9:41 am by Mags | Last modified 2/09/2015 2:14 pm by Jason Byrnes | 4066 views | 7 replies |

Mags

Display total record count where date column is between two dates

I have a database which contains a column called 'StagingDate' which is date formatted yyyy-mm-dd. I'd like to display a table which shows a total count of all records with the StagingDate divided up into months, so the table would have a row for each month January-December and in the Date column it would show the total records with a date in January, the total with a date in February and so on. How would I set this up? Oh, and the client would like this working for a presentation on Tuesday this week, so I'm desperately trying to get it up and running by Monday evening (GMT)!! Any help would be appreciated.

Sign in to reply to this post

Jason ByrnesWebAssist

COUNT and GroupBy Should give the desired results:

SELECT *, COUNT(StagingDate) recordCount FROM tableName GROUP BY DATE_FORMAT(StagingDate, '%Y-%m-%d')

where tableName is the name of the table.

Sign in to reply to this post

Mags

Sorry Jason, I should have explained more what I need to do. At the moment I have the following recordset:

<?php
$paramSession_rsAccountants = "-1";
if (isset($_SESSION['JFBMicroID'])) {
$paramSession_rsAccountants = $_SESSION['JFBMicroID'];
}
mysql_select_db($database_new_greenroom, $new_greenroom);
$query_rsAccountants = sprintf("SELECT *, COUNT(clients.AccountantID) FROM clients RIGHT OUTER JOIN accountants ON clients.AccountantID = accountants.AccountantID WHERE accountants.JFBMicroID = %s AND (clients.StagingDate BETWEEN '2015-02-01' AND '2015-02-28') GROUP BY accountants.AccountantID, clients.AccountantID", GetSQLValueString($paramSession_rsAccountants, "text"));
$rsAccountants = mysql_query($query_rsAccountants, $new_greenroom) or die(mysql_error());
$row_rsAccountants = mysql_fetch_assoc($rsAccountants);
$totalRows_rsAccountants = mysql_num_rows($rsAccountants);
?>

I then echo the total count for February using <?php echo $row_rsAccountants['COUNT(clients.AccountantID)']; ?>

However because I have 36 months' of data, I need to echo the total for each month separately from Feb 2015 - Feb 2018 and so would like to build the query into the PHP syntax rather than have 36 recordsets and query each one individually - it's just that I'm not great on PHP syntax!

So ideally I would like a basic recordset like:

<?php
$paramSession_rsAccountants = "-1";
if (isset($_SESSION['JFBMicroID'])) {
$paramSession_rsAccountants = $_SESSION['JFBMicroID'];
}
mysql_select_db($database_new_greenroom, $new_greenroom);
$query_rsAccountants = sprintf("SELECT *, COUNT(clients.AccountantID) FROM clients RIGHT OUTER JOIN accountants ON clients.AccountantID = accountants.AccountantID WHERE accountants.JFBMicroID = %s GROUP BY accountants.AccountantID, clients.AccountantID", GetSQLValueString($paramSession_rsAccountants, "text"));
$rsAccountants = mysql_query($query_rsAccountants, $new_greenroom) or die(mysql_error());
$row_rsAccountants = mysql_fetch_assoc($rsAccountants);
$totalRows_rsAccountants = mysql_num_rows($rsAccountants);
?>

and then put the date range in the individual PHP queries like:

<?php echo $row_rsAccountants['COUNT(clients.AccountantID)'] WHERE (clients.StagingDate BETWEEN '2015-02-01' AND '2015-02-28') ; ?>
<?php echo $row_rsAccountants['COUNT(clients.AccountantID)'] WHERE (clients.StagingDate BETWEEN '2015-03-01' AND '2015-03-31') ; ?>

I know that the syntax is wrong, but does that make sense?

Sign in to reply to this post

Jason ByrnesWebAssist

you can't use a where clause in the php echo like that.

if you use COUNT and GROUP By in the recordset itself, it will give you the required results.

Sign in to reply to this post

Mags

I can't get this to work at all - I've attached a copy of the test page where I have 3 recordsets - the new one as you've suggested above (I think) and also two recordsets for the months of March & April which work OK. I've echoed these and the one using the first recordset gives me nothing:

<?php echo $row_rsAccountants['COUNT(clients.AccountantID)']; ?>

The other two return the correct values:

<?php echo $row_rsAccountantsMar15['COUNT(clients.AccountantID)']; ?>
<?php echo $row_rsAccountantsApr15['COUNT(clients.AccountantID)']; ?>

Sign in to reply to this post

Jason ByrnesWebAssist

your count statement:
COUNT(clients.StagingDate) recordcount

is not correct.

it should be:
COUNT(clients.StagingDate) as recordCount


the group by is also wrong:
GROUP BY accountants.AccountantID, clients.AccountantID

should be:
GROUP BY DATE_FORMAT(StagingDate, '%Y-%m-%d')


to echo the count, you don't use the count function in the php code, you simply echo the recordCount alias:
<?php echo $row_rsAccountants['recordCount']; ?>


If you would like 1 on 1 help setting this up, we can help through a premiere support appointment:
http://www.webassist.com/premier_request.php

Sign in to reply to this post

Mags

If I make those changes it returns a blank page with "Query is empty". I'm happy to pay for a premium support ticket, however because our client needs something working by tomorrow morning (GMT) I've put together the page he wants using my multiple recordsets and frankly awful coding - but it will do for demonstration purposes!

In the meantime, I'll send you the page I've built that works to show you what I need it to do, all the login and FTP info you need, and maybe you could knock it into shape for me? That will give us more time to get it right. All info is in the PM section. Thanks Jason!

Sign in to reply to this post

Jason ByrnesWebAssist

Where this is /custom coding, you should sign up for a premiere support appointment:
http://www.webassist.com/premier_request.php

Sign in to reply to this post

Build websites with a little help from your friends

Your friends over here at WebAssist! These Dreamweaver extensions will assist you in building unlimited, custom websites.

Build websites from already-built web applications

These out-of-the-box solutions provide you proven, tested applications that can be up and running now.  Build a store, a gallery, or a web-based email solution.

Want your website pre-built and hosted?

Close Windowclose

Rate your experience or provide feedback on this page

Account or customer service questions?
Please user our contact form.

Need technical support?
Please visit support to ask a question

Content

rating

Layout

rating

Ease of use

rating

security code refresh image

We do not respond to comments submitted from this page directly, but we do read and analyze any feedback and will use it to help make your experience better in the future.

Close Windowclose

We were unable to retrieve the attached file

Close Windowclose

Attach and remove files

add attachmentAdd attachment
Close Windowclose

Enter the URL you would like to link to in your post

Close Windowclose

This is how you use right click RTF editing

Enable right click RTF editing option allows you to add html markup into your tutorial such as images, bulleted lists, files and more...

-- click to close --

Uploading file...