This is the table structure:
CREATE TABLE `reports` ( `report_id` int(11) NOT NULL auto_increment, `computer_id` int(11) NOT NULL default '0', `date_entered` datetime NOT NULL default '1970-01-01 00:00:00', `total_seconds` int(11) NOT NULL default '0', `iphone_id` int(11) default '0', PRIMARY KEY (`report_id`), KEY `computer_id` (`computer_id`), KEY `iphone_id` (`iphone_id`) ) ENGINE=MyISAM AUTO_INCREMENT=120990 DEFAULT CHARSET=latin1
I need a SELECT
statement that will list the report_id
per computer_id
from latest entered date_entered
, and I have no clue how to do that.
Unfortunately, you cannot use the max(date) function with the where clause. Doing so will result in an error as shown: select * from employees where max(start_date); This is because SQL does not allow aggregate functions in the where clause.
MAX function works with “date” data types as well and it will return the maximum or the latest date from the table.
MySQL retrieves and displays DATE values in ' YYYY-MM-DD ' format. The supported range is '1000-01-01' to '9999-12-31' .
This should do it:
SELECT report_id, computer_id, date_entered FROM reports AS a WHERE date_entered = ( SELECT MAX(date_entered) FROM reports AS b WHERE a.report_id = b.report_id AND a.computer_id = b.computer_id )
Are you only wanting it to show the last date_entered, or to order by starting with the last_date entered?
SELECT report_id, computer_id, date_entered FROM reports GROUP BY computer_id ORDER BY date_entered DESC -- LIMIT 1 -- uncomment to only show the last date.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With