powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / sql - запрос
2 сообщений из 2, страница 1 из 1
sql - запрос
    #39959029
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблицы

1. Таблица справочник цен товаров goods
id - ид поля
cat_id - ид категории
goods_id - ид товара
date_update - дата обновления инфы о товаре
cost - цена на товар

2. Таблица расчетов calc
id - ид поля расчета
name - наименование расчета

3. Таблица расчета товара calc_goods
calc_id - ид расчета FK calc.id
cat_id - ид категории
goods_id - ид товара

Необходимо вывести исходя из таблицы расчетов товаров calc_goods актуальные цена на товар для каждого id_calc (ид расчета).
Товары могут быть с категорией или без категории, в зависимости от этого в справочнике цен товаров каждая строка определяется
либо goods_id (без категории, cat_id = null), либо парой goods_id cat_id (если cat_id <> null).

Делаю таким образом:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select c.name,
       cg.calc_id,
       cg.goods_id,
       t.cost
  from  calc_goods cg
  left join calc c
    on (cg.calc_id = c.id)
  left join (select g.goods_id,
                     decode(g.cat_id, null, '  ', g.cat_id) as cat,
                     max(g.cost) as cost
               from goods g group by g.goods_id, g.cat_id) t
    on cg.goods_id = t.goods_id
   and decode(cg.cat_id, null, '  ',cg.cat_id) = t.cat   



Можно ли как-то оптимизировать данный запрос?
...
Рейтинг: 0 / 0
sql - запрос
    #39959619
Оптимизировать - в смысле, вас скорость выборки не устраивает, или что? Я, честно, не понимаю структуру из описания (что такое "расчёты товаров").
Навскидку - примените NVL вместо DECODE. И уточню, раз вы заменяете на ' ' - получается, айдишники строковые?
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / sql - запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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