возможна ли сортировка внутри group by?

martinelli

Новичок
возможна ли сортировка внутри group by?

Есть таблица indicators уникальным полем ind_id.
И есть таблица indicators_year связанная с indicators. В indicators_year хранятся описательные поля индикаторов, которые могут меняться год от года. Соответствие заданному году определяется в поле iy_years. Если нет описания за текущий год, то оно берется за последний из предыдущих.
Так же в indicators_year есть поле iy_num, по которому должна происходить сортировка в заданном году.

текущий мой запрос:
PHP:
$year =3;
SELECT * FROM indicators LEFT JOIN indicators_year ON ind_id= iy_indid WHERE  iy_years <= $year group by ind_id ORDER BY  iy_num
Беда втом, что при таком запросе при наличии в indicators_year нескольких строчек по индикатору за несколько лет в сортировке (и выводе данных) будет использоваться значение за 1й год, а не за последний, как мне надо (если индикатору, у которого значение iy_num было равно "1" в первом году присвоить "100" в третьем, он все равно вылезет первым). (И я не могу в запросе сторого написать WHERE iy_years = $year , так как описания за 3й год может не быть, и должно в этом случае использоваться за 2й или 1й год)

Можно ли как-нибуть сделать дополнительную скрытую сортировку внутри group by, чтобы из объедененных по ind_id строк выдавалась та, у которой iy_years максимальная. Посоветуйте в каком направлении можно подумать...
 

martinelli

Новичок
Пасиб за совет. Все получилось :)
PHP:
SELECT * FROM indicators LEFT JOIN indicators_year as i1 ON ind_id= iy_indid WHERE iy_years = (select max(i2.iy_years) from indicators_year as i2 where i1.iy_indid =i2.iy_indid) group by ind_id ORDER BY iy_num
 
Сверху