I have the following SQL query:
SELECT Devices.*
, DevicesActivityData.*
FROM Devices
INNER JOIN DevicesActivityData
ON Devices.ID = DevicesActivityData.DeviceID
WHERE DevicesActivityData.DeviceDateTime IN (
SELECT MAX(DevicesActivityData.DeviceDateTime) AS MaxDate
FROM DevicesActivityData
GROUP BY DevicesActivityData.DeviceID
)
And I need to complete my code :
var Q = db.Devices.Join(
db.DevicesActivityDatas,
d => d.ID,
a => a.DeviceID,
(d, a) => new { d.ID,d.DeviceName,a.DeviceDateTime }
);
I have Problem in last part select max
How can I Add this part to my query….
[where DevicesActivityData.DeviceDateTime in ( select max(DevicesActivityData.DeviceDateTime) as MaxDate from DevicesActivityData group by DevicesActivityData.DeviceID )]
First create the query that selects the max dates:
then do:
Deferred execution will make both queries run as one.
As a side note I would like to point out that the logic may not be correct. It seems to me that you want a list of devices with their
DevicesActivityDatathat has the most recent date. But the max dates are not related to a device any more, it’s just a list of arbitrary dates. So a device can have moreDevicesActivityDatarecords with a date that matches one of the collected dates. I think you need to look forDevicesActivityDatarecords with the max date for that specific device.