Я новичок в sql и уже почти один день застрял в следующей проблеме:
У меня есть две таблицы, из которых я получаю значения, devices и devices_LOG.Мне нужно отобразить все записи devices_LOG, где devices.status = '1' И мне нужно, чтобы они были уникальными (т.е. я хочу видеть только одну запись devices_LOG для каждого устройства).Мой код выглядит так:
SELECT DISTINCT
devices_LOG.device_id, MAX(devices_LOG.LogDate) AS LogDate,
manufacturers.name, devices_LOG.LogType, devices_LOG.userName,
devices_LOG.userFullname, devices.invnumber, devices.modelname,
devices.modelnumber
FROM devices_LOG
INNER JOIN
devices ON devices_LOG.device_id = devices.id AND
devices_LOG.device_id = devices.id
INNER JOIN
manufacturers ON devices.manufacturer_id = manufacturers.id
WHERE (devices.devicestatus = '1') AND (devices_LOG.LogType = 'Out')
GROUP BY devices_LOG.device_id, manufacturers.name, devices_LOG.LogType,
devices_LOG.userName, devices_LOG.userFullname, devices.invnumber,
devices.modelname, devices.modelnumber
ORDER BY devices_LOG.device_id
, который отлично подходит для возврата только записей для вещей, которые имеют device.status = '1', но он возвращает несколько записей журнала для чего-то с одним и тем же device.id.Итак, результаты моего запроса выглядят так:
device_id LogDate username LogType modelname ...etc
1 11/12/2011 foo out generic
1 11/10/2011 world out generic
2 9/10/2011 hello out generic3
2 8/9/2011 bye out generic3
, когда мне нужно, чтобы это выглядело так:
device_id LogDate username LogType modelname ...etc
1 11/12/2011 foo out generic
2 9/10/2011 hello out generic3
Я пытался использовать MAX в LogDate, пытался группировать, выбирать разные,и т.д .... но я просто не могу понять это.Любые идеи?
Я понимаю, что мое заявление sql сейчас довольно уродливо, возможно потому, что я безуспешно пробовал все, что могу придумать до этого момента, поэтому любая помощь будет принята с благодарностью, спасибо