Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Сортировка / 5 сообщений из 5, страница 1 из 1
16.10.2006, 09:56
    #34056228
Igor Kozlov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка
Здравствуйте!

Помогите, пожалуйста разобраться с сортировкой в следующем запросе:

SELECT m.name, cm.unit, sum (cm.quantity) AS quantity
FROM get_raw_materials() m
LEFT JOIN c_materials_2 cm ON cm.material_id = m.id
LEFT JOIN products_full p ON p.product_id_pkey = cm.product_id
GROUP BY name, unit

Ф-ция get_raw_materials() возвращает список всех(!) матриалов ОТСОРТИРОВАННЫХ в нужном порядке.
Теперь мне нужно вывести список материалов из другой таблицы (объединенной) и чтобы он был отсортирован согласно списка выведенного ф-цией get_raw_materials().

Очень надеюсь на Вашу помощь.
...
Рейтинг: 0 / 0
16.10.2006, 10:00
    #34056239
Niemi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка
я думаю что саму функцию тоже надо показать.
...
Рейтинг: 0 / 0
16.10.2006, 10:15
    #34056276
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка
Нужно, чтобы ф-ия get_raw_materials() возвращала кроме других поле ordr, соответствующее порядковому номеру строки. И сортировать по m.ordr во внешнем order by.
...
Рейтинг: 0 / 0
16.10.2006, 11:36
    #34056536
Igor Kozlov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка
Вот она:

DECLARE
res TEXT;
myrec RECORD;
ret_value return_pair;

BEGIN

FOR myrec IN (SELECT raw_material_id_pkey, g.name, rms.name as sort, dimension_1, dimension_2, dimension_3, dimension_4,
g.dim_1_format, g.dim_2_format, g.dim_3_format, g.dim_4_format, g.display_format, m.comments
FROM raw_materials m, raw_material_groups g, raw_materials_sorts rms
WHERE m.raw_material_group_id = g.raw_material_group_id_pkey AND m.raw_materials_sort_id = rms.raw_materials_sort_id_pkey
ORDER BY g.name, sort, m.dimension_1, m.dimension_2, m.dimension_3, m.dimension_4)
LOOP

res := myrec.display_format;

res := replace (res,'%1', to_char(myrec.dimension_1, myrec.dim_1_format));
res := replace (res,'%2', to_char(myrec.dimension_2, myrec.dim_2_format));
res := replace (res,'%3', to_char(myrec.dimension_3, myrec.dim_3_format));
res := replace (res,'%4', to_char(myrec.dimension_4, myrec.dim_4_format));

ret_value.id := myrec.raw_material_id_pkey;
ret_value.name := myrec.name || ' ' || myrec.comments || res || ' ' || myrec.sort;

RETURN NEXT ret_value;

END LOOP;
END;

Я думаю, что предложение LeXa NalBat-а стоит внимания, хотя придется многовато переделывать.
Если есть другие идеи - буду очень благодарен.
...
Рейтинг: 0 / 0
16.10.2006, 15:34
    #34057502
Jelis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка
Хм... а может для начала сформулировать что значит "нужный порядок"? Функция, вроде, перым делом сортирует по name, и почему тогда не хватает той же сортировки в запросе ( просто дабавив ORDER BY name)?
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Сортировка / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]