SELECT T.ID, T.NAME, COALESCE(SUM_RUBLI, 0), COALESCE(SUM_UE, 0) FROM TOVARI T LEFT JOIN ( SELECT PR.TOVAR_ID, SUM(SUM_RUBLI), SUM(SUM_UE) FROM PRODAGI PR GROUP BY PR.TOVAR_ID) AS P (ID, SUM_RUBLI, SUM_UE) ON P.ID = T.ID
Да уж, лажанулся я с примером. Я даже и не подозревал что оптимизатор такой план сгенерить может - браво!!!
Джойнить можно только независимые таблицы. Иначе полный ахтунг в консерватории.
Это почему? Мне на самом деле надо джойнить не с агрегатами, а с первой попавшейся записью, как я раньше спрашивал. Задача - обеспечение совместимости разных форматов новостей (rss, rdf, atom). Мне надо чтобы любую новость можно было пердставить в формате rss ОДНИМ представлением. Атом допускает множество вложенных объектов, а рсс только один. Поэтому для представления атом-новости в виде rss я выбираю любой попавшийся вложенный объект, причём совершенно наплевать какой именно. Отсюдова и задача возникла. Пока выкрутился двумя подзапросами: первый выбирает запись с минимальным ID, а второй по этому ID джойнит.