У меня есть таблица MySQL со следующей настройкой:
CREATE TABLE IF NOT EXISTS `coords` (
`project_id` int(4) NOT NULL,
`day` tinyint(4) NOT NULL,
`x` tinyint(4) NOT NULL,
`y` tinyint(4) NOT NULL,
`z` tinyint(4) NOT NULL,
PRIMARY KEY (`tid`,`day`,`x`,`y`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Каждый проект выполняется несколько дней. Каждый день проверяются некоторые случаи, и результаты (набор координат) сохраняются в этой таблице (вместе с идентификатором проекта и номером дня). Один и тот же набор координат x и y можно сохранять чаще, чем один раз (координата z является фактическим результатом).
Теперь я хочу получить все доступные наборы координат для одного проекта с самыми последними доступными данными.
Т.е., при условии, что у меня есть следующие данные:
pid | day | x | y | z
1 | 1 | 2 | 1 | 5
1 | 1 | 2 | 2 | 6
1 | 2 | 3 | 3 | 7
1 | 3 | 2 | 1 | 8
1 | 3 | 3 | 3 | 9
Теперь запрос должен вернуть:
day | x | y | z
1 | 2 | 2 | 6
3 | 2 | 1 | 8
3 | 3 | 3 | 9
Я пытался следующий запрос:
SELECT day, x, y, z
FROM coords
WHERE pid = 1
GROUP BY CONCAT(tid,'.',x,'.',y)
ORDER BY day DESC
Но этот запрос возвращает старые данные, так же как день = 1, x | y | z = 2 | 1 | 5 вместо дня = 3 и x | y | z = 2 | 1 | 8.
Может кто-нибудь, пожалуйста, указать мне в правильном направлении того, что мне здесь не хватает?
Спасибо заранее,
Пол