powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Подзапрос в параметре процедуры
25 сообщений из 57, страница 2 из 3
Подзапрос в параметре процедуры
    #39553945
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kaktus1983Компактный вариант решения:

За такое в продакшене увольняют по несоотвествию.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Подзапрос в параметре процедуры
    #39553947
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevskyубрать нахрен широченную горизонтальную портянку
решил на ночь посмотреть фильм ужасов.
Как я понял, в таблице input_hour_data по 32 столбца
FL_CL_??, T1_CL_??, T2_CL_??, T3_CL_??, T4_CL_??, T1_VG_??, FV_VG_??
ну или большинство по 32 столбца (или 27), и меньшинство по 7 столбцов.

Это какой-то кабздец, товарищи. 150 столбцов, как минимум? Однако, до предела не доехал
https://firebirdsql.org/en/firebird-technical-specifications/
Maximum number of columns per table
Depends on data types used. (Example: 16,384 INTEGER (4-byte) values per row.)

я так понимаю, перед автором стояла задача - или заливать херову пропасть значений в одну строку, или получить в n (5?) раз больше записей.
А скорее всего с датчиков с самого начала стали просто валить все в одну запись. А чё с этим делать - "потом разберемся".
Однако, правила разработки БД:
1. определяем типы и структуры хранимых данных (входящих) по исходным данным
2. смотрим, как мы это будем обрабатывать и извлекать
3. если на этапе 2 кривизна, возвращаемся к пункту 1.
...
Рейтинг: 0 / 0
Подзапрос в параметре процедуры
    #39553972
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvА скорее всего с датчиков с самого начала стали просто валить все в одну запись. А чё с этим делать - "потом разберемся".
Однако, правила разработки БД:
1. определяем типы и структуры хранимых данных (входящих) по исходным данным
2. смотрим, как мы это будем обрабатывать и извлекать
3. если на этапе 2 кривизна, возвращаемся к пункту 1.


Я смотрю тут все стали такие академичные :)

А если было так - вот у нас система, есть 3 датчика, нужно автоматизировать.
Нет, больше датчиков не будет.

Через год.
У нас тут появилось еще 100-500 датчиков, нужно и с них снимать показания тоже.
И да, это нужно уже вчера.

Вместо того что бы шагать по новым граблям с неопределенным сроком реализации,
экстенсивно расширяем уже работающее решение, и работаем дальше.
Да, недостатки есть, как и везде. Разберемся по ходу дела, главное продашкн что бы работал.
Обычное дело.
...
Рейтинг: 0 / 0
Подзапрос в параметре процедуры
    #39553973
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийвсю эту хрень построенную на if-ах заменить одним select-ом с case-ми


Может быть это кому-то будет красивее, может это что-то улучшит в оптимизации, но эта часть работает и не является камнем преткновения.
Чувство красоты у каждого разное.
Из перлов состоит только перловая каша.
...
Рейтинг: 0 / 0
Подзапрос в параметре процедуры
    #39554015
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks> Из перлов состоит только перловая каша.

В мемориз! (с)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Подзапрос в параметре процедуры
    #39554023
kaktus1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fraks,
Вы довольно точно описали ситуацию, у меня аналогичное мнение.
К сожалению, от гуру часто получаешь не советы и варианты решения, а только критиканство
...
Рейтинг: 0 / 0
Подзапрос в параметре процедуры
    #39554051
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда ты "гуру" с первого сообщения сразу ставишь в рамки своего видения решения поставленной задачи не описывая собственно постановку, ты ничего иного и не получишь. Ибо если ты уже встал на неверный путь при наличии более правильных вариантов решения, то ни один гуру тебе не укажет правильного, т.к. ты описал только свой путь, который может быть уже неверным.
Посему вопросы в стиле "мне надо что-то типа такого" без описания собственно начальной постановки задачи в виде взаимодействия физических объектов и их представления в виде таблиц ни к чему путному не приведут.

Это так к слову.
...
Рейтинг: 0 / 0
Подзапрос в параметре процедуры
    #39554099
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийвсю эту хрень построенную на if-ах заменить одним select-ом с case-ми

Кстати, она от этого займет больше строчек чем сейчас.

Код: plsql
1.
2.
3.
4.
-- Выбор параметров
if (:no_cl=03) then  select FL_CL_03, T1_CL_03, T2_CL_03, T3_CL_03, T4_CL_03 from input_hour_data where (id = :id) into :fv, :t1, :t2, :t3, :t4;
if (:no_cl=04) then  select FL_CL_04, T1_CL_04, T2_CL_04, T3_CL_04, T4_CL_04 from input_hour_data where (id = :id) into :fv, :t1, :t2, :t3, :t4;
if (:no_cl=05) then  select FL_CL_05, T1_CL_05, T2_CL_05, T3_CL_05, T4_CL_05 from input_hour_data where (id = :id) into :fv, :t1, :t2, :t3, :t4;



Код: plsql
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.
select
 case 
   when (:no_cl = 03) then FL_CL_03
   when (:no_cl = 04) then FL_CL_04
   when (:no_cl = 05) then FL_CL_05
  end,
  case 
   when (:no_cl = 03) then T1_CL_03
   when (:no_cl = 04) then T1_CL_04
   when (:no_cl = 05) then T1_CL_05
  end,
  case 
   when (:no_cl = 03) then T2_CL_03
   when (:no_cl = 04) then T2_CL_04
   when (:no_cl = 05) then T2_CL_05
  end,
  case 
   when (:no_cl = 03) then T3_CL_03
   when (:no_cl = 04) then T3_CL_04
   when (:no_cl = 05) then T3_CL_05
  end,
  case 
   when (:no_cl = 03) then T4_CL_03
   when (:no_cl = 04) then T4_CL_04
   when (:no_cl = 05) then T4_CL_05 
  end
from input_hour_data 
where (id = :id) 
into :fv, :t1, :t2, :t3, :t4;



Наглядно видно что нифига лучше не стало.
Каков будет твой вариант?
...
Рейтинг: 0 / 0
Подзапрос в параметре процедуры
    #39554116
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks> Каков будет твой вариант?

Какие фаши таказательства? (с)

Нет смысла обсуждать сферического коня в гипотетическом вакууме,
надо задачу нормально поставить и обмозговать, а потом бросаться
лабать ХП и запросы (возможно, у автора нет такой возможности, ибо
горит и нужно вчера). 24 часа (насколько я понял), конечно, довольно
пограничный случай, но я бы, в первую очередь, подумал о том, чтобы
хранить всю эту портянку не в ширину (в 24 поля), а в высоту - запросы
стали бы сложнее, конечно, но не такие спагетти-подобные.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Подзапрос в параметре процедуры
    #39554126
kaktus1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
o_v_a,
Не всегда вопрос можно поставить глобально: если на данный момент, по ряду причин "имеем что имеем" и требуется помощь в локальном решении, то вопрос в стиле "мне надо что-то типа такого" вполне уместен (на мой взгляд, конечно).
Возвращаться к вопросу перепроектировки БД при любой "сложности" можно бесконечно.
P.S.
Всем спасибо за замечания и предложения
...
Рейтинг: 0 / 0
Подзапрос в параметре процедуры
    #39554148
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустамfraks> Каков будет твой вариант?

Какие фаши таказательства? (с)

Нет смысла обсуждать сферического коня в гипотетическом вакууме,

Мимопроходящий высказался по поводу широкой пачки if и сказал что лучше свернуть в один запрос с case.
И именно это утверждение я рассмотрел, а не сферы в вакуууме.
В моем варианте и по моим понятиям - лучше не стало.

Преложил показать свои варианты.
МП, как обычно, "выше этого".

Лично для меня, когда запрос целиком по высоте не помещается на экране - очень некомфортно, теряется обзорность структуры процедуры. А вот так в ширину - тостаточно рассмотреть только один запрос и проконтролировать изменения индексов в строках. Расположено все друг над другом, проверять легко.

Гаджимурадов Рустамнадо задачу нормально поставить и обмозговать, а потом бросаться
лабать ХП и запросы (возможно, у автора нет такой возможности, ибо
горит и нужно вчера). 24 часа (насколько я понял), конечно, довольно
пограничный случай, но я бы, в первую очередь, подумал о том, чтобы
хранить всю эту портянку не в ширину (в 24 поля), а в высоту - запросы
стали бы сложнее, конечно, но не такие спагетти-подобные.

Честно говоря, не горю желанием разбираться в вопросе ТС.
Однако и критика ТС со стороны присутствующих иногда весьма неконструктивна.
Что и пытался рассмотреть.
...
Рейтинг: 0 / 0
Подзапрос в параметре процедуры
    #39554184
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
16.11.2017 11:04, fraks пишет:
> В моем варианте и по моим понятиям - лучше не стало.

мои труды читать надо!
(С)-проф.Выбегалло Амвросий Амбруазович

а ты до конца не дочитал.
всю эту хрень заменить одним ЗАПРОСОМ, на case-ах.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Подзапрос в параметре процедуры
    #39554250
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraksЛично для меня, когда запрос целиком по высоте не помещается на экране - очень некомфортно, теряется обзорность структуры процедуры. А вот так в ширину - тостаточно рассмотреть только один запрос и проконтролировать изменения индексов в строках. Расположено все друг над другом, проверять легко.

Честно говоря, не горю желанием разбираться в вопросе ТС.
Портянки в ширину, конечно, удобнее смотреть и править, чем в высоту (хотя и case можно в ширину писать, в принципе), но оптимальность решения же не только от комфорта для глаз зависит. :) Без желания разбираться в проблеме ТСа (у меня и у самого его особо нет) - это досужие разговоры в стиле "как подбирать калор" и "зеленый лисапед лучше желтого".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Подзапрос в параметре процедуры
    #39554357
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий16.11.2017 11:04, fraks пишет:
> В моем варианте и по моим понятиям - лучше не стало.

мои труды читать надо!
(С)-проф.Выбегалло Амвросий Амбруазович

а ты до конца не дочитал.
всю эту хрень заменить одним ЗАПРОСОМ, на case-ах.


Если на твоем языке процедура называется "ВСЯ ЭТА ХРЕНЬ" и предлагаешь ее завернуть в один запрос с case - то получится полный алес капут. В нынешнем виде ее можно нормально отладить, и быть уверенным в результатах котрые она выдает.
В виде развесистого запроса малейшее неверное движение в сторону - и получим гавно вместо результата.
...
Рейтинг: 0 / 0
Подзапрос в параметре процедуры
    #39554361
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks,

Лично мне отлаживать такое даже не хочется.
Хотя бы уж в ES завернуть, и то приятнее глазу будет.
...
Рейтинг: 0 / 0
Подзапрос в параметре процедуры
    #39554366
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
16.11.2017 14:23, fraks пишет:
> В виде развесистого запроса малейшее неверное движение в сторону...

— А эта бредятина откуда?
— Изречения из «Упанишад».
— А что такое «Упанишады»?
— Не знаю…

(C)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Подзапрос в параметре процедуры
    #39554752
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraksВ виде развесистого запроса малейшее неверное движение в сторону - и получим гавно вместо результата.

В виде развесистого запроса при малейшем движении в сторону максимум что мы можем получить - изменение плана. Причём в 70% случаев в сторону улучшения быстродействия. А процедура как долбила тупо всё подряд, так и будет. Не, я не противник селективных процедур как таковых, дело всегда в нюансах.
...
Рейтинг: 0 / 0
Подзапрос в параметре процедуры
    #39554781
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишкаfraksВ виде развесистого запроса малейшее неверное движение в сторону - и получим гавно вместо результата.

В виде развесистого запроса при малейшем движении в сторону максимум что мы можем получить - изменение плана. Причём в 70% случаев в сторону улучшения быстродействия. А процедура как долбила тупо всё подряд, так и будет. Не, я не противник селективных процедур как таковых, дело всегда в нюансах.

Да?

Код: 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.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
  SELECT T.*, 
         - DATEDIFF(day, @EndDate + 1, CASE WHEN @StartDate > T.ItemDate
                                              THEN @StartDate
                                              ELSE T.ItemDate END) 
         * T.Amount * @PayPercent * T.[Index] / 100 AS Income
  FROM ( SELECT T1.*, (SELECT -SUM(CASE WHEN MM.Direction = 0 AND O.TypeId <> @TAccount
                                          THEN MM.DirAmount
                                        WHEN MM.Direction = 1 AND H2.Id IS NOT NULL
                                          THEN DirAmount
                                          ELSE 0 END)
    FROM Movement MM WITH(INDEX(IN_Movement_GroupIdContentId))
      LEFT LOOP JOIN Objects O ON O.Id = MM.ContainerId
      LEFT LOOP JOIN History H2 ON H2.ObjectId = MM.ContainerId AND
H2.StatusId IN (@IODate, @ITDate) AND H2.ObjectId = MM.ContainerId AND
H2.ItemDate < @EndDate + 1
    WHERE MM.GroupId = T1.Id AND MM.ContentId = @Roubles
  ) AS Amount
  FROM (
  SELECT M.GroupId AS Id,
         H2.ItemDate,
         D.DocNum,
         OT.ItemName AS Type,
         OC.Itemname AS Contractor,
         OC.Id AS ContractorId,
         OM.ItemName AS Manager,
         PInd.Value AS [Index]
    FROM History H
      INNER LOOP JOIN Movement M WITH(INDEX(IN_Movement_ContainerId))
                      ON M.ContainerId = H.ObjectId 
                     AND M.ContentId = @Roubles
      INNER LOOP JOIN Objects O1
                      ON O1.Id = M.GroupId 
                     AND O1.TypeId IN (@CashOrder, @DraftIn)
      INNER JOIN Links L ON L.ChildId = M.GroupId 
                        AND L.TypeId = @Contractor
      INNER JOIN Links LM ON LM.ChildId = L.ParentId 
                         AND LM.TypeId = @Manager 
                         AND ISNULL(@ManagerId, LM.parentId) = LM.parentId
      INNER JOIN History H2 ON H2.ObjectId = M.GroupId 
                           AND H2.ItemDate < @EndDate + 1
      INNER JOIN Status S2 ON S2.Id = H2.StatusId 
                          AND S2.Code = 'DATE'
      INNER JOIN History H1 ON H1.ObjectId = M.ContainerId
      INNER JOIN Status S ON S.Id = H1.StatusId 
                         AND S.Code = 'PAYDATE'
      INNER LOOP JOIN Objects OM ON OM.Id = LM.parentId
      INNER LOOP JOIN Objects OC ON OC.Id = L.ParentId
      LEFT LOOP JOIN Properties PInd ON PInd.ObjectId = OC.Id 
                                    AND PInd.TypeId = @Index
      INNER LOOP JOIN Doc D ON D.Id = M.GroupId
      INNER LOOP JOIN Objects O ON O.Id = M.GroupId
      INNER LOOP JOIN ObjType OT ON OT.Id = O.TypeId
   WHERE H.StatusId IN (@IODate, @ITDate) AND H.Itemdate >= @EndDate + 1
     AND (H2.StatusId = @CODate OR EXISTS(SELECT TOP 1 * FROM MoveLink ML
                                           INNER JOIN History HL ON HL.ObjectId = ML.ObjectId
                                           INNER JOIN Status SL ON SL.Id = HL.StatusId 
                                                               AND SL.GroupId = @AccType 
                                                               AND SL.Code IN ('BANK', 'VEXELMANY')
                                          WHERE ML.MoveId = M.Id 
                                            AND ML.TypeId = @Account))
     AND NOT EXISTS (SELECT TOP 1 * FROM History 
                       WHERE ObjectId = H2.ObjectId AND StatusId = @Tender)
  UNION
  SELECT LMP.ChildId AS Id,
         H2.ItemDate AS DocDate,
         D.DocNum,
         OT.ItemName AS DocType,
         OC.Itemname AS Contractor,
         OC.Id AS ContractorId,
         OM.ItemName AS Manager,
         PInd.Value AS [Index]
    FROM Objects O
      INNER LOOP JOIN Links LM ON LM.ChildId = O.Id AND LM.TypeId = @Manager
AND ISNULL(@ManagerId, LM.parentId) = LM.parentId
      INNER LOOP JOIN Links LMP ON LMP.TypeId = @MustCompl AND LMP.ParentId
= O.Id
      INNER LOOP JOIN Objects O1 ON O1.Id = LMP.ChildId AND O1.TypeId IN
(@InvoiceOut, @InvoiceTr)
      INNER LOOP JOIN History H1 ON H1.ObjectId = O1.Id AND H1.ItemDate <
@EndDate + 1
      INNER LOOP JOIN Status S ON S.Id = H1.StatusId AND S.Code = 'PAYDATE'
      INNER JOIN History H2 ON H2.ObjectId = LMP.ChildId AND H2.ItemDate <
@EndDate + 1
      INNER JOIN Status S2 ON S2.Id = H2.StatusId AND S2.Code = 'DATE'
      INNER LOOP JOIN Doc D ON D.Id = O1.Id
      INNER LOOP JOIN ObjType OT ON OT.Id = O1.TypeId
      INNER JOIN Objects OM ON OM.Id = LM.parentId
      INNER JOIN Objects OC ON OC.Id = O.Id
      LEFT LOOP JOIN Properties PInd ON PInd.ObjectId = OC.Id AND
PInd.TypeId = @Index
   WHERE O.TypeId = @Firm
     AND NOT EXISTS (SELECT TOP 1 * FROM History WHERE ObjectId =
LMP.ChildId AND StatusId = @Tender)
     AND (O1.TypeId = @InvoiceTr OR EXISTS (SELECT TOP 1 *
                                              FROM Links L
                                                INNER LOOP JOIN History H ON
H.ObjectId = L.ParentId
                                                INNER LOOP JOIN Status S ON
S.Id = H.StatusId AND S.GroupId = @CalcStyle AND S.Code IN
('CSDELAY','CSCASH','CSPREPAY')
                                             WHERE L.ChildId = O1.Id AND
L.TypeId = @InvQueryOut
                                           ))
  ) AS T1
  ) AS T
  ORDER BY T.Manager, T.Itemdate, T.DocNum


...
Рейтинг: 0 / 0
Подзапрос в параметре процедуры
    #39554811
Фотография Exteris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraksМимопроходящийвсю эту хрень построенную на if-ах заменить одним select-ом с case-ми

Кстати, она от этого займет больше строчек чем сейчас.

Код: plsql
1.
2.
3.
4.
-- Выбор параметров
if (:no_cl=03) then  select FL_CL_03, T1_CL_03, T2_CL_03, T3_CL_03, T4_CL_03 from input_hour_data where (id = :id) into :fv, :t1, :t2, :t3, :t4;
if (:no_cl=04) then  select FL_CL_04, T1_CL_04, T2_CL_04, T3_CL_04, T4_CL_04 from input_hour_data where (id = :id) into :fv, :t1, :t2, :t3, :t4;
if (:no_cl=05) then  select FL_CL_05, T1_CL_05, T2_CL_05, T3_CL_05, T4_CL_05 from input_hour_data where (id = :id) into :fv, :t1, :t2, :t3, :t4;



Код: plsql
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.
select
 case 
   when (:no_cl = 03) then FL_CL_03
   when (:no_cl = 04) then FL_CL_04
   when (:no_cl = 05) then FL_CL_05
  end,
  case 
   when (:no_cl = 03) then T1_CL_03
   when (:no_cl = 04) then T1_CL_04
   when (:no_cl = 05) then T1_CL_05
  end,
  case 
   when (:no_cl = 03) then T2_CL_03
   when (:no_cl = 04) then T2_CL_04
   when (:no_cl = 05) then T2_CL_05
  end,
  case 
   when (:no_cl = 03) then T3_CL_03
   when (:no_cl = 04) then T3_CL_04
   when (:no_cl = 05) then T3_CL_05
  end,
  case 
   when (:no_cl = 03) then T4_CL_03
   when (:no_cl = 04) then T4_CL_04
   when (:no_cl = 05) then T4_CL_05 
  end
from input_hour_data 
where (id = :id) 
into :fv, :t1, :t2, :t3, :t4;



Наглядно видно что нифига лучше не стало.
Каков будет твой вариант?

Оно можно и так написать -
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select
 case :no_cl when 03 then FL_CL_03 when 04 then FL_CL_04 when 05 then FL_CL_05 end,
 case :no_cl when 03 then T1_CL_03 when 04 then T1_CL_04 when 05 then T1_CL_05 end,
 case :no_cl when 03 then T2_CL_03 when 04 then T2_CL_04 when 05 then T2_CL_05 end,
 case :no_cl when 03 then T3_CL_03 when 04 then T3_CL_04 when 05 then T3_CL_05 end,
 case :no_cl when 03 then T4_CL_03 when 04 then T4_CL_04 when 05 then T4_CL_05 end,
from input_hour_data
where (id = :id) 
into :fv, :t1, :t2, :t3, :t4;


Но, ИМХО, те же яйцы.
...
Рейтинг: 0 / 0
Подзапрос в параметре процедуры
    #39554823
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks,

ну и какой смысл выкладывать сюда запрос из MS SQL да ещё с прибитыми гвоздём хинтами?
...
Рейтинг: 0 / 0
Подзапрос в параметре процедуры
    #39554842
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraksДа?Если уверен, что это развесистый запрос, то уж извини, но ты просто жизни не видел.
...
Рейтинг: 0 / 0
Подзапрос в параметре процедуры
    #39554873
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ExterisОно можно и так написать -
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select
 case :no_cl when 03 then FL_CL_03 when 04 then FL_CL_04 when 05 then FL_CL_05 end,
 case :no_cl when 03 then T1_CL_03 when 04 then T1_CL_04 when 05 then T1_CL_05 end,
 case :no_cl when 03 then T2_CL_03 when 04 then T2_CL_04 when 05 then T2_CL_05 end,
 case :no_cl when 03 then T3_CL_03 when 04 then T3_CL_04 when 05 then T3_CL_05 end,
 case :no_cl when 03 then T4_CL_03 when 04 then T4_CL_04 when 05 then T4_CL_05 end,
from input_hour_data
where (id = :id) 
into :fv, :t1, :t2, :t3, :t4;


Но, ИМХО, те же яйцы.

Вот именно. Причем все же хуже - в столбцах тут разные поля, а в массиве IF меняется только номер поля, а буквы те же.
Гораздо проще увидеть косяк.
...
Рейтинг: 0 / 0
Подзапрос в параметре процедуры
    #39554874
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисfraks,

ну и какой смысл выкладывать сюда запрос из MS SQL да ещё с прибитыми гвоздём хинтами?

Пример развесистого запроса, не более того.
Когда я пытался повторить такую же структуру на Firebird - получалось примерно такая же развесистая клюква.
Зарубил эту схему нафиг, из-за сложности в понимании работы запросов.
Хотя есть люди которые с ней работают.
Запрос взят у Тенцера, 2001 году примерно.
...
Рейтинг: 0 / 0
Подзапрос в параметре процедуры
    #39554876
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryfraksДа?Если уверен, что это развесистый запрос, то уж извини, но ты просто жизни не видел.

У каждого своя жизнь и понимание уровня сложности.
Для меня он - сложный, и я не пишу того что мне же будет сложно понять.
...
Рейтинг: 0 / 0
Подзапрос в параметре процедуры
    #39554878
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забористо пятница началась... :)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 57, страница 2 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Подзапрос в параметре процедуры
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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