powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / PostgreSQL или MySQL вместо Oracle
12 сообщений из 87, страница 4 из 4
PostgreSQL или MySQL вместо Oracle
    #35946332
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javajdbcFavnБолее корректным был бы вопрос - "а зачем имено в СКЛ-е?" Кроме того, например такая задача решена на МуСКЛ-е с перемеными:
Как решит такую (екзоотическую) задачу ПостГрес на СКЛ-е?
Ету задачу можно легко решить на ЛЮБОМ языке, кроме СКЛ :-)))
Кроме того, 100% понятно, что при необходимости ее надо решать вне СКЛ-а. Вопрос был про нестандартные фичи разных баз.
Я даже не уверен что Оракл-СКЛ сделает такое.Нашел время написать и проверить. Задача не стоит выеденного яйца и решается примитивными стандартными (SQL3) методами.
Чтобы было чуть интереснее, выкинем нафиг не нужные тут суррогатные ключи и получим возможность произвольной сортировки (по приоритету, например). Кроме того, выкинем и таблицы - нечего DDL по пустякам дергать. Все равно скучно - рекурсии нет, OLAP (window) функции примитивны. Вобщем, в DB2 решение м.б. таким:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
with TASK( DESCRIPTION, RESOURCES ) as (
	values  ( 'calculation',  2  ),
		( 'managing',  1  ),
		( 'washing',  2  ) 
), RESOURCES( NAME ) as (
	values  ('Vasia'), ('Natasha'), ('Alex'), 
		('Freddy'), ('Petia') 
), T( NUMB, DESC, RES, SUM_RES ) as (
	select row_number() over(order by order of S), DESCRIPTION, 
		RESOURCES, sum(RESOURCES) over(order by order of S) 
		from ( select * from TASK order by DESCRIPTION ) as S 
), R( NUMB, NAME ) as (
	select row_number() over(order by order of S), NAME
		from ( select * from RESOURCES order by NAME ) as S
)  	
select T.NUMB, T.DESC, T.RES, R.NUMB, R.NAME 
	from T left outer join R 
		on R.NUMB > T.SUM_RES - T.RES and R.NUMB <= T.SUM_RES;
Результат:
Код: plaintext
1.
2.
3.
4.
5.
T.NUMB     T.DESC     T.RES  R.NUMB   R.NAME 
    1    calculation   2         1     Alex
    1    calculation   2         2     Freddy
    2    managing      1         3     Natasha
    3    washing       2         4     Petia
    3    washing       2         5     Vasia

Не знаю как насчет фокуса с values, но все остальное должно выглядеть примерно так же для любой SQL3-совместимой СУБД. То есть уже почти для любой современной - кроме мускля, конечно
...
Рейтинг: 0 / 0
PostgreSQL или MySQL вместо Oracle
    #35946517
ОКТОГЕН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javajdbcОКТОГЕН,

Интересная фишка. я обычно решаю такие задачи дополнительным
полем где записываю апдейтом ИД_потока,а потом перечитываю селектом
по етому ИД (ну и процессинг_статус конечно).

Однако не совсем понятно -- вы хотите напустить такое
много-потоковое решение на ету задачу?
Ето будет один СКЛ?
Запрос, выбирающий из пула заказы один. А что ещё надо-то?
Прежде чем решать какую-то задачу, смотрю на фичи, которые есть в наличии,
и, исходя из этого, решаю.
...
Рейтинг: 0 / 0
PostgreSQL или MySQL вместо Oracle
    #35946612
ОКТОГЕН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, в postgresql теперь 3 штатных метода работы с иерархическими данными: контриб connectby, ltree тип и WITH RECURSIVE. В mySQL придётся писать специальную ХП.
...
Рейтинг: 0 / 0
PostgreSQL или MySQL вместо Oracle
    #35947500
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Favn,

Отлично, примерно такое я и спрашивал. Спасибо!

Да, к сожалению в МуСКЛ нет аналитики.
Однако многие аналитические задачи, включая ету, мускл
решает с помошью переменных.
...
Рейтинг: 0 / 0
PostgreSQL или MySQL вместо Oracle
    #35947513
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОКТОГЕН,

Ну всем понятно, что задача решается лупом на ЛЮБОМ языке где есть луп.
Вопрос был про СКЛ. Вот FAVN конкретно привел работающий единичный СКЛ с
аналитикой на ДБ2.
...
Рейтинг: 0 / 0
PostgreSQL или MySQL вместо Oracle
    #35947636
ОКТОГЕН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javajdbc, согласитесь, это чисто академическая задача.
Чесслово, пересилить себя не могу, лень жуткая.
Но псевдопредставления, насколько я помню, в PgSQL теперь также имеются,
правда появились они относительно недавно и разобраться до конца пока не успел.
...
Рейтинг: 0 / 0
PostgreSQL или MySQL вместо Oracle
    #35947668
ОКТОГЕН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решения с переменными будут работать почти также как и в MySQL.
...
Рейтинг: 0 / 0
PostgreSQL или MySQL вместо Oracle
    #35948152
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОКТОГЕНjavajdbc, согласитесь, это чисто академическая задача.
Чесслово, пересилить себя не могу, лень жуткая.
Но псевдопредставления, насколько я помню, в PgSQL теперь также имеются,
правда появились они относительно недавно и разобраться до конца пока не успел.

Ок, задача действительно ради прикола, стандартные веши вроде все базы делают,
а вот на грани (за гранью) стандартов и начинается все интересное :-))

Спасибо всем, до встречи.
...
Рейтинг: 0 / 0
PostgreSQL или MySQL вместо Oracle
    #35954786
ОКТОГЕН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javajdbc, живёт под постгрисом!!!
Код: plaintext
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.
with 
TASK as (        

SELECT DESCRIPTION, RESOURCES 
      FROM
	  (values ( 'calculation',  2  ),
		      ( 'managing',  1  ),
		      ( 'washing',  2  )) AS TASK( DESCRIPTION, RESOURCES )
                     
                     ), 
RESOURCES as (

 SELECT  NAME  FROM 	
               (values  ('Vasia'), ('Natasha'), ('Alex'), 
		                ('Freddy'), ('Petia')) AS RESOURCES( NAME )

), 
T as (	select 
          row_number() over(order by DESCRIPTION ) AS SUMB, 
          DESCRIPTION AS DESC, 
		  RESOURCES AS  RES, 
          sum(RESOURCES) over(order by DESCRIPTION)  AS  SUM_RES
		from  TASK 
        order by DESCRIPTION  
), 
R as (select row_number() over(order by NAME) AS NUMB, NAME
		from ( select * from RESOURCES order by NAME ) AS S
) 

select T.SUMB, T.DESC, T.RES, R.NUMB, R.NAME 
	from T left outer join R 
		on R.NUMB > T.SUM_RES - T.RES and R.NUMB <= T.SUM_RES;

Результат идентичен натуральному)))))))
...
Рейтинг: 0 / 0
PostgreSQL или MySQL вместо Oracle
    #35954822
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОКТОГЕН,

понятно, аналитические функции рулят!
Под Ораклом, мускл, наверное не получит СКЛ3 вообше.
...
Рейтинг: 0 / 0
PostgreSQL или MySQL вместо Oracle
    #35954872
ОКТОГЕН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javajdbc, короче, думал я, что это не сработает. Потом стал разбираться, как оказалось:
1) У DB Синтаксис CTE отличается
2) SELECT FROM VALUE в постгре скобка стоит не там
3) orderby orderby в окне аналитических функций не срабатывал, но это можно заменить на название поля.
4) Самое смешное, мой клиент(EMS), просто не выводил результаты этого селекта. Там парсер запроса тупой. Он считает, что если запрос не начинается со слова SELECT или SHOW, то запрос не выводит данные.
А вообще, если есть СТЕ, то можно очень нехилые вещи делать.
...
Рейтинг: 0 / 0
PostgreSQL или MySQL вместо Oracle
    #35955023
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОКТОГЕНjavajdbc, короче, думал я, что это не сработает. Потом стал разбираться, как оказалось:
1) У DB Синтаксис CTE отличается
2) SELECT FROM VALUE в постгре скобка стоит не там
3) orderby orderby в окне аналитических функций не срабатывал, но это можно заменить на название поля.
4) Самое смешное, мой клиент(EMS), просто не выводил результаты этого селекта. Там парсер запроса тупой. Он считает, что если запрос не начинается со слова SELECT или SHOW, то запрос не выводит данные.
А вообще, если есть СТЕ, то можно очень нехилые вещи делать.

Понятно. я в Оракле подобных вкусных запросов обожрался :-)
Теперь в Мускле сижу на диете, только @переменые на десерт :-)
...
Рейтинг: 0 / 0
12 сообщений из 87, страница 4 из 4
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / PostgreSQL или MySQL вместо Oracle
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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