Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
1 таблица tab1
id, DATA
в таблице находятся для каждого id несколько дат (790тыс записей)
_________
id DATA
1 2007
1 2009
1 2004
2 2009
2 2012
3 2004
3 2002
3 2006
2 таблица tab2
id_people, FIO
таблица людей id_people(key) (112тыс записей)
________________
id_people FIO
1 Иванов
2 Петров
3 Сидоров
таблицы связаны по tab1.id = tab2.id_people
Необходимо сгруппировать записи по id с выделением максимальной даты
Хочу получить в результате запроса:
FIO DATA
Иванов 2009
Петров 2012
Сидоров 2006
попытался написать запрос:
SELECT t2.DATA , t2.FIO FROM
(SELECT t1.DATA , t1.FIO, t1.id_people
FROM
(select tab1.DATA, tab1.id, tab2.id_people, tab2.FIO,
from tab1, tab2
WHERE tab2.id_people=tab1.id
order by tab1.DATA desc
) as t1
GROUP BY t1.id_people) as t2
WHERE ".$_where."
в $_where пишу все свои ограничения по дате (в фильтру запроса).
правильно ли я написал запрос?
t1- список упорядоченный по дате
t2- группировка по макс. дате
основной запрос фильтр из сгруппированных записей
Запрос выполняется 40 сек, можно ли как то ускорить выполнение за счет оптимизации кода?
Отредактированно Norfonzor (03.01.2012 14:23:02)
Неактивен
Неактивен
Страниц: 1