Проблемы с простым запросом!!!
Дана таблица вида: {id, ext_id, type, date}
Необходимо получить выборку id-шников, каждый элемент кот-й определяется максимальной датой для уникального набора ext_id, type. Например:
1 / 1 / 2 / 2000-01-01
2 / 1 / 3 / 2000-01-10
3 / 1 / 2 / 2000-01-15
4 / 1 / 2 / 2000-01-05
Искомая выборка:
2 / 1 / 3 / 2000-01-10
3 / 1 / 2 / 2000-01-15
те. id={2,3}
Наверное, это легко, но что-то ничего в голову не приходит!!
Заранее спасибо.
проще, быстрее и производительнее сделать это с помощью temporary table - временной таблицы. я просто с ходу не могу, надо подумать.
тебе нужно сделать это для каждой уникальной пары ext_id-type? это делает задачу еще труднее.
есть также один трюк, т.н. "MAX-CONCAT TRICK", который позволяет выбирать это одним запросом, но он сложен даже для 1 уникального столбца, а для пары - надо опять же долго думать.
жди, мож придумаю. кстати см. мануалу mySQL.
...mysql/Docs/manual.html#example-Maximum-column-group-row
вот
итак
CREATE TEMPORARY TABLE tmp(
ext_id INT,
type INT,
date DATE);
INSERT INTO tmp (SELECT ext_id,type,MAX(date) GROUP BY ext_id,type);
SELECT t.* FROM table_name AS t,tmp AS t1 WHERE (t.ext_id=t1.ext_id) AND (t.type=t1.type) AND (t.date=t1.date);
DROP TABLE tmp;
это гораздо производительнее и проще для понимая чем всякие фокусы.
для следующей таблицы:
1 1 2 2000-01-01
2 1 3 2000-01-10
3 1 2 2000-01-15
4 1 2 2000-01-05
5 1 1 2000-01-20
6 1 1 2000-02-12
выдает:
6 1 1 2000-02-12
1 1 2 2000-01-15
2 1 3 2000-01-10
если это то, что нужно, то ок, нет - пиши