powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / The Power of Oracle SQL
25 сообщений из 108, страница 3 из 5
The Power of Oracle SQL
    #39433566
blackmac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, познавательный труд.
...
Рейтинг: 0 / 0
The Power of Oracle SQL
    #39433867
Mr_Muscle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
!Спасибо за труд!

Очень познавательно. Особенно понравилось то, что много примеров и легко их воспроизвести.
...
Рейтинг: 0 / 0
The Power of Oracle SQL
    #39433872
Mr_Muscle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На странице 23 получается небольшая неточность

Запрос заполняет табличку днями недели
Код: plsql
1.
2.
3.
4.
create table week(id, day) as
select rownum, to_char(trunc(sysdate, 'd') + level - 1, 'fmday')
 from dual
connect by rownum <= 7;



У меня, например, заполняется русскими названиями, из-за этого некорректно будет отрабатывать запрос где сравнение идет по дням недели (on w.day = p.day)
...
Рейтинг: 0 / 0
The Power of Oracle SQL
    #39434058
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr_Muscle,

Спасибо, учту.
...
Рейтинг: 0 / 0
The Power of Oracle SQL
    #39434752
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*Plusdbms_photoshopпропущено...
Я подразумевал внешние соединения, но из процитированного абзаца это совершенно непонятно. Надо переформулировать. Спасибо.
пропущено...
Посмотрю сохранившуюся документацию по ORACLE v5 в переводе РДТеХ..
Посмотрел.
Подтверждаю, что в ORACLE v5 использовали (+) для указания внешних соединений.
SQL*Plus. Руководство пользователя. Версия 2.0
Подготовлено к печати 24 марта 1991 г.

SQL*Plus User's Guide
Version 2.0
Part No. 3201-V2.0 July 1987

Внешние соединения (стр. 76)
Код: plsql
1.
2.
3.
4.
SQL> SELECT ОТДЕЛЫ.ОТДЕЛ, ИМЯОТДЕЛА, ДОЛЖНОСТЬ, ФАМИЛИЯ
  2  FROM ОТДЕЛЫ, СОТРУДНИКИ
  3  WHERE ОТДЕЛЫ.ОТДЕЛ = СОТРУДНИКИ.ОТДЕЛ (+)
  4  ORDER BY ОТДЕЛЫ.ОТДЕЛ 


Потом сделаю скан этой страницы и размещу здесь, чтобы осталась для истории... :-)
...
Рейтинг: 0 / 0
The Power of Oracle SQL
    #39434762
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v5
Код: 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.
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.
107.
108.
109.
110.
111.
112.
113.
114.
                  НПКО Мекомп при Минчермете
             SQL * Plus   СПРАВОЧНОЕ РУКОВОДСТВО.
                          Версия 2.0
           СИСТЕМА УПРАВЛЕНИЯ РЕЛЯЦИОННОЙ БАЗОЙ ДАННЫХ
                            ORACLE
c Copyright,1986,1987   Корпорация  Oracle Белмонт,
Калифорния,США.
Все права сохраняются.Отпечатано в США.
Номер части 3203.V2.0
Ревизия июля 1987г.
Автор :   Джонатан Сакс
Соавторы: Лэрри Баер,Дэрри Кэбсенел,Лэрри Стивенс

                                Авторские права.
Использование,копирование или изложение подчиняются  огра-
ничениям  указанным в вашем контракте с Корпорацией ORACLE.
Использование,копирование или изложение  со стороны прави-
тельства подчиняются ограничениям,установленным в  подраз-
деле (b)(3)(ii) пункта об авторских правах  по "Техническим
Данным"  и   "Программному  обеспечению"  в       документе
CFR 252.227-7013.
        Информация,содержащаяся в данном документе м.б.из-
менена без предупреждения.

ORACLE-зарегестрированная торговая марка Корпорации ORACLE.
SQL * Plus - торговая марка Корпорации ORACLE.

                            ИСТОРИЯ ИЗМЕНЕНИЯ.
Версия     Статус     История изменения        Дата

2.0        Beta       Редакция,приведшая      6/86
                      к версии 2.0 SQL*Plus
                      и 5.1 ORACLE.
             -        Добавлено описание
                      SQL*Net (сетевой
                      вариант)
             -        Справочное руководство
                      по SQL*Plus выделено из
                      руководства по пользо-
                      ванию и опубликовано
                      отдельно.
2.0        Продукция  Редакция с целью уточ-   10/10/86
                      нения и улучшения
                      восприятия текста.

                                ПРЕДИСЛОВИЕ.
                                   ЦЕЛЬ.
        Справочное руководство по SQL*Plus  содержит
              детальное описание языка запросов  SQL*Plus,
              который м.б.использован для создания,
              хранения,модификации,поиска,вывода на
              печать  и  управления  информацией  в БД ORACLE.

… … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … 

                            ДРУГИЕ ОПЕРАТОРЫ SQL

Оператор       Функция                   Пример

(+)            Указание того,что пре-  ...WHERE DEPT.
               дыдущий столбец являет-  DEPTNO=EMP.DEPTNO(+)
               ся внешним,объединяющим
               столбцом в соединении.

… … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … 

                           Соединения в Запросах
SELECT ...FROM табл,табл,...
 WHERE условие...;
                        Связанная тема: SELECT.
        Описание: Когда строки выбираются из двух или более таблиц,
для их соединения  в  разных  таблицах может  использовать-
ся фраза WHERE.Любое логическое выражение  во фразе WHERE,
сравнивающее поля в различных таблицах,определяет  соедине-
ние ; соединяются строки,для которых выражение истинно.
        Оператор  '(+)' можно использовать с любой стороны логичес-
кого выражения для указания внешнего соединения,при котор-
ом каждая строка одной таблицы соединяется по  меньшей мере
с одной строкой другой  таблицы  (указанной с '(+)').Если
отсутствует строка для соединения,то,по правилам соедине-
ния ,определенным с помощью логического выражения ,строка
соединяется с мнимой строкой ,в  которой все поля содержат
пустые значения.
        Примеры: П р о с т о е с о е д и н е н и е: Чтобы  для каж-
дого служащего отобразить его имя,оклад(SAL),должность(JOB),
и название отдела(DNAME),где номер отдела не больше 30,
введите:

         SQL> SELECT     ENAME,SAL,JOB,DNAME
           2  FROM       EMP,DEPT
           3  WHERE      EMP,DEPTNO<=30 AND EMP.DEPTNO=
           4             DEPT.DEPTNO;

Так  как информация для отображения хранится в двух различ-
ных таблицах ,требуется соединение .Строки из двух таблиц
соединяются согласно правилу EMP.DEPTNO=DEPT.DEPTNO.
        Заметим ,что DEPTNO не  обязательно  д.б.выбран из
 таблицы .Кроме того фраза WHERE ( с логическим выражением
DEPTNO<=30 )  используется для выделения строк точно также,
как и для описания соединения.
        В н е ш н е е  с о е д и н е н и е: Чтобы  отобразить ту же
самую информацию,но обеспечить вывод  на экран каждой выб-
ранной из EMP строки,даже ,если  DEPT не содержит  строки
для  соответственного  номера  отдела ,нужно  использовать
оператор  внешнего  соединения  в  DEPT.DEPTNO.Тогда,если
строка из EMP не  соединится с  какой либо строкой из DEPT,
она будет сливаться с мнимой строкой из NULL-таблиц:

         SQL> SELECT     ENAME,SAL,JOB,DNAME
           2   FROM       EMP,DEPT
           3   WHERE      EMP,DEPTNO<=30 AND EMP.DEPTNO=
           4              DEPT.DEPTNO(+);


...
Рейтинг: 0 / 0
The Power of Oracle SQL
    #39434774
Фотография Валерий Юринский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elicv5
Это ещё одно подтверждение про (+) в ORACLE v5.

Может быть у кого-то остались описания от ORACLE v4?

Советская версия называлась КАРС, КАРС-32
(Корневая Автоматизированная (?) Реляционная Система).
...
Рейтинг: 0 / 0
The Power of Oracle SQL
    #39434789
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валерий Юринский,

Вот и верь после этого сотрудникам Оракла. :))
Хотя я помню, что не только у госпожи Колган встречал про шестую версию.
На сайте Оракла можно нагуглить такой антиквариат
http://www.oracle.com/technetwork/database/database-technologies/rdb/0307-sql1999-130211.pdf Basic joined tables: Inner joins, right and left outer joins, with full nesting with arbitrary
comparison operators.
Rdb has supported this feature since V6.0.
В других местах пишут, что old style синтаксис реализован по стандарту SQL-86.

В третьих местах пишут, что в SQL-86 ничего не было про внешность соединений и некоторые вендоры реализовывали по своему усмотрению.
http://in2test.lsi.uniovi.es/sqlfpc/?lang=en#sql86joins The SQL86 standard does not specify outer joins. However, there are some DBMS vendor specific ways to indicate outer joins which are now supported. Given a join condition in the WHERE over columns a and b of the joined tables, the following outer joins are supported:

Oracle: a = b (+) (left), a (+) = b (right)
SQL Server: a *= b (left), a =* b (right)Похоже на правду, в МССКЛ даже на последних версиях работает эта техника со звездочками.

А вообще насколько я понял 4-я версия была даже не клиент-серверной, так что в те дебри не особо интересно уже лезть.
Раньше у меня было несоклько pdf c историческими вехами, но некоторые все еще просто гуглятся на сайте Оракла.
http://www.oracle.com/us/corporate/profit/p27anniv-timeline-151918.pdf 1985 Oracle keeps
pace with emerging computing models
with the release of Oracle Version 5, one
of the first relational database systems
to operate in client/server environments.
...
Рейтинг: 0 / 0
The Power of Oracle SQL
    #39434800
Фотография Валерий Юринский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopВалерий Юринский,

А вообще насколько я понял 4-я версия была даже не клиент-серверной, так что в те дебри не особо интересно уже лезть.
Раньше у меня было несоклько pdf c историческими вехами, но некоторые все еще просто гуглятся на сайте Оракла.
[/quot]
В нашей книге "Oracle7: Практическое руководство" (М., Софтсервис, 1997)
я привел историческую информацию, почерпнутую из большого текста,
найденного в конференции Usenet. Это был перевод на русский язык.

P.S. Книжку уже отсканировали.
Жду, когда распознают в текст.
...
Рейтинг: 0 / 0
The Power of Oracle SQL
    #39438790
rekrabbe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Автор, а куда вы выкладываете новую версию книги, в первом сообщение есть ссылка на книгу, но там версия 1.0. или 1.0 пока и есть последняя?
...
Рейтинг: 0 / 0
The Power of Oracle SQL
    #39438801
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rekrabbeпока и есть последняя?Да.

PS. К сожалению, движок wordpress не позволяет удалить файл и загрузить с тем же именем, так что новую ссылку выложу здесь позже.
...
Рейтинг: 0 / 0
The Power of Oracle SQL
    #39452211
j2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop, блин как-то пропустил тему. Сейчас в "курилке" увидел сообщение про книгу, почитаю на досуге. Спасибо за труд.
...
Рейтинг: 0 / 0
The Power of Oracle SQL
    #39466296
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работа завершена.

Получилось "немного" позже чем конец февраля, но вторая часть оказалась несколько насыщеннее, чем предполагалось. Итого опубликовано 15 задач, которые решаются разными специфическими фичами Oracle SQL. Все примеры из реальной жизни (ну ладно, кроме Zeckendorf representation и Quine :)), определенное влияние на контент, безусловно, оказано общением на sql.ru

Хотел бы выразить благодарность Elic, SY, -2-, wurdu, andrey_anonymous, RAVEN, Sayan Malakshinov, orawish, Vladimir Sitnikov, anrdeymx, Nikotin_, suPPLer, Vint, stax, всех сложно перечислить.
Sayan Malakshinov и orawish повлияли напрямую - во второй части от них использовано по одному PL/SQL алгоритму.

Некоторые задачи планировал опубликовать как пятничные, но в итоге таки воздержался.
Если кто придумает более элегантные/производительные решения - просьба продемонстрировать.
В summary ко второй части таблица со спискам задач и приемами, использованными в решении .
Для некоторых можно было включить дополнительные приемы, но поскольку они не вносили никакой новизны и не являются привлекательными с точки зрения производительности - этого сделано не было.

Вторая часть более практическая и меньше первой по объему, полагаю читать ее увлекательнее чем первую, хотя, местами, может быть и сложнее.
Критика и комментарии приветствуются.

Все версии книги.
...
Рейтинг: 0 / 0
The Power of Oracle SQL
    #39466297
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, пару человек после первой части мне говорили "не слишком ли ты восхваляешь pattern matching? неплохо бы больше фактов".
Надеюсь это требование удовлетворено.

Еще важный момент что все скрипты для исходных данных находятся непосредственно в книге и в тех случаях, когда использовано dbms_random.seed, стоит про него не забывать для воспроизводимости результатов.
...
Рейтинг: 0 / 0
The Power of Oracle SQL
    #39466385
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,

Thx
...
Рейтинг: 0 / 0
The Power of Oracle SQL
    #39467063
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop Задача: для таблицы с числами получить сумму их всех возможных комбинаций
...
Если бы в таблице были только первые три строки, select * from t_num where id < =3;
ID NUM1 1 2 4 3 9
то были бы такие комбинации чисел
1 + 4 = 5
1 + 9 = 10
4 + 9 = 13
1 + 4 + 9 = 14
и итоговая сумма 5 + 10 + 13 + 14 = 42

Садись, два. Сами числа исходной таблицы есть комбинации.
Правильный ответ - 42 + 14 = 56

dbms_photoshop На SQL это решается, если сгенерировать все возможные перестановки (как минимум два способа с помощью connect by) и затем для перестановки посчитать сумму.
Вычисление суммы всех возможных комбинаций не требует "генерации" последовательностей .
Поэтому не требуется ни 25 секунд, ни 10-и, ни, даже, 0,5-и.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
With T as (
Select 1 as id, 1 as num from dual 
union all
Select 2 as id, 4 as num from dual 
union all
Select 3 as id, 9 as num from dual 

)
Select isum * ipt as true_result
     , isum * (ipt-1) as  dbms_photoshot_result
From (
Select  Sum(T.num) as isum ,  Floor(power(2,count(*))/2) as ipt from T
)



Видать, бином Ньютона, в средней школе, как-то мимо тебя просклизнул.
...
Рейтинг: 0 / 0
The Power of Oracle SQL
    #39467081
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby,

Замечательно, что ты получил "true_result", только это не то, что требовалось в задаче.
Перечитай что требуется еще раз. Если вопросы останутся - можно поговорить, если ты изменишь стиль.

В сгенерированных данных может быть какая-то магия (хотя я ее пока не вижу), но речь идет про общий случай.
...
Рейтинг: 0 / 0
The Power of Oracle SQL
    #39467086
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,
магия, вопросы...
Смешной ты.
...
Рейтинг: 0 / 0
The Power of Oracle SQL
    #39467087
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopВ сгенерированных данных может быть какая-то магия (хотя я ее пока не вижу), но речь идет про общий случай.Точнее, учитывая вполне фиксированную формулу для генерации можно вывести формулу для суммы всего, но это не то, что требуется.
...
Рейтинг: 0 / 0
The Power of Oracle SQL
    #39467089
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobydbms_photoshop,
магия, вопросы...
Смешной ты.Спасибо за твое замечание, booby. Хорошего дня.
...
Рейтинг: 0 / 0
The Power of Oracle SQL
    #39467642
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,

a1+a2+a3 + (a1+a2+a3) + (a1+a2) + (a1+a3) + (a2+a3) =4(a1 + a2 + a3)

Ну и дальше школьная математика в аппроксимации на N элементов.

А вообще это действительно следствие из бинома Ньютона
Пример не самый удачный получился. Для таких задач полно уже выведенных формул в комбинаторике.

А вот для задачи с комбинациями строк таких формул сильно меньше.
...
Рейтинг: 0 / 0
The Power of Oracle SQL
    #39467683
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

Целью надо сделать получение таблицы с комбинациями, а не их суммы.
Это упрощение было лишним.

Там дальше еще встречается сравнение запросов с select sum(...) вместо select * для того, чтоб минимизировать фетч.
...
Рейтинг: 0 / 0
The Power of Oracle SQL
    #39468039
Фотография мегамозг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopКстати, изначально планировал еще три главы ...
Особенности DML в Oracle. Например, про update при наличии join ... и подобное.
Это всё есть в блогах известных товарищей и прочих местах и заниматься просто компиляцией несколько нудно.

А главное эти три темы выходят за рамки основной идеи книги.

Я вот не припомню, чтобы в книгах по оракл было про апдейт или дилит с джойнами. В отличие от книг по MySQL или MS SQL.
По-моему, это базовая вещь и обязательно должна присутствовать в любой книге по sql.
Странно это.
Или имелось в виду что-то отличное от
Код: sql
1.
2.
3.
4.
--ms sql 
update t set f1 = z.f2
from table1 t
join table2 z on t.k = z.k
...
Рейтинг: 0 / 0
The Power of Oracle SQL
    #39468070
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мегамозг,

открой для себя merge
...
Рейтинг: 0 / 0
The Power of Oracle SQL
    #39468076
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мегамозгЯ вот не припомню, чтобы в книгах по оракл было про апдейт или дилит с джойнами.RTFM Updating a Join View (FAQ)
...
Рейтинг: 0 / 0
25 сообщений из 108, страница 3 из 5
Форумы / Oracle [игнор отключен] [закрыт для гостей] / The Power of Oracle SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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