Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / sql - запрос / 2 сообщений из 2, страница 1 из 1
18.05.2020, 16:42
    #39959032
wsnet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql - запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
Есть таблицы

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).

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

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
18.05.2020, 17:26
    #39959042
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql - запрос
Модератор: Не надо тут кросспостить, тем более ваш запрос не про MSSQL

https://www.sql.ru/forum/1325475/sql-zapros
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / sql - запрос / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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