powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Помогите составить блок схему по SQL запросу
6 сообщений из 6, страница 1 из 1
Помогите составить блок схему по SQL запросу
    #39247666
alcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
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.
WITH box AS (

SELECT
  cn.CLIENT_ID,
  cn.CONTAINER_ID,
  md.DEBET_ID,
  md.CREDIT_ID,
  md.DEBET,
  md.CREDIT,
  md.TRANS_SUM,
  md.MTRANS_ID,
---------------------------------------------------------------
  CASE WHEN md.debet = 70 AND md.credit = 40 THEN -md.TRANS_SUM
       WHEN md.debet = 40 AND md.credit = 70 THEN  md.TRANS_SUM
       ELSE 0
  END AS INV_SUM,
  CASE WHEN md.debet = 70 AND md.credit = 40 THEN md.TRANS_DATE
       WHEN md.debet = 40 AND md.credit = 70 THEN md.TRANS_DATE
       ELSE NULL
  END AS INV_DATE,
---------------------------------------------------------------
  CASE WHEN md.debet = 40 AND md.credit = 50 THEN  md.TRANS_SUM
       WHEN md.debet = 50 AND md.credit = 40 THEN -md.TRANS_SUM
       ELSE 0
  END AS RET_SUM,
---------------------------------------------------------------
  CASE WHEN md.debet = 40 AND md.credit = 60 THEN  md.TRANS_SUM
       WHEN md.debet = 60 AND md.credit = 40 THEN -md.TRANS_SUM
       ELSE 0
  END AS LOST_SUM,
---------------------------------------------------------------
  CASE WHEN md.MTRANS_ID IS NOT NULL AND md.debet  = 40 THEN  md.TRANS_SUM
       WHEN md.MTRANS_ID IS NOT NULL AND md.credit = 40 THEN -md.TRANS_SUM
       ELSE 0
  END AS PAY_SUM,
  CASE WHEN md.MTRANS_ID IS NOT NULL AND md.debet  = 40 THEN md.TRANS_DATE
       WHEN md.MTRANS_ID IS NOT NULL AND md.credit = 40 THEN md.TRANS_DATE
       ELSE NULL
  END AS PAY_DATE
---------------------------------------------------------------
FROM MONEY_DIST md, CONTAINER cn
  WHERE cn.CLIENT_ID = md.CLIENT_ID
    AND (cn.CONTAINER_ID = md.DEBET_ID OR cn.CONTAINER_ID = md.CREDIT_ID)
)

, money AS (
SELECT 
  box.CLIENT_ID
 ,box.CONTAINER_ID
 ,SUM(box.INV_SUM)  AS INV_SUM
 ,MAX(box.INV_DATE) AS INV_DATE
 ,SUM(box.RET_SUM)  AS RET_SUM
 ,SUM(box.LOST_SUM) AS LOST_SUM
 ,SUM(box.PAY_SUM)  AS PAY_SUM
 ,max(box.PAY_DATE) AS PAY_DATE
 ,SUM(box.INV_SUM) + SUM(box.RET_SUM) + SUM(box.LOST_SUM) + SUM(box.PAY_SUM) AS ACC
FROM box
GROUP BY box.CLIENT_ID, box.CONTAINER_ID)

SELECT
   mn.CLIENT_ID
  ,NVL(cs.SUB_ID,-1) AS SUB_ID
  ,mn.CONTAINER_ID
  ,mn.INV_SUM
  ,mn.INV_DATE
  ,mn.RET_SUM
  ,mn.LOST_SUM
  ,mn.PAY_SUM
  ,mn.PAY_DATE
  ,mn.ACC
FROM 
  money mn, 
  CONTAINER cn, 
  CLIENT_SUB cs,
  CLIENT_BASKET cb
WHERE mn.CLIENT_ID = cn.CLIENT_ID
  AND mn.CONTAINER_ID = cn.CONTAINER_ID  
  AND cn.SUB_ID = cs.SUB_ID (+)
  AND cs.ITEM_ID = cb.ITEM_ID (+)
ORDER BY mn.CLIENT_ID, SUB_ID;
...
Рейтинг: 0 / 0
Помогите составить блок схему по SQL запросу
    #39247667
alcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня получилось вот так
...
Рейтинг: 0 / 0
Помогите составить блок схему по SQL запросу
    #39247668
alcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Помогите составить блок схему по SQL запросу
    #39248193
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Между Вашей блок-схемой и запросом маловато общего :)
В запросе нет никаких "сохранений данных" и т.п.
...
Рейтинг: 0 / 0
Помогите составить блок схему по SQL запросу
    #39248764
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alcon,

Я впервые слышу, чтобы SQL-запрос выражали блок-схемой.

SQL - это язык декларативный, а не императивный, то есть он и был придуман как противоположность блок-схемам.

Если интересно, что на самом деле делает сервер при выполнении этого запроса, можно посмотреть план запроса - увидите нечто отдаленно похожее на вашу блок-схему.
...
Рейтинг: 0 / 0
Помогите составить блок схему по SQL запросу
    #39250136
Vakrill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cane Cat Fisher , полностью с вами согласна!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Помогите составить блок схему по SQL запросу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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