Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 82 83 84 85 86 87 [88] 89 90 91   вперед  Ctrl
 Re: Извините за офтоп. Просто посмеяться  [new]
XMLer
Member

Откуда:
Сообщений: 258
stax..
Vint
softwarer,
Вот поэтому для меня человек не знающий разницу между union и union all на собеседовании - далее не проходит)))

поетому по умолчанию надо было делать ALL
если надо уникальные, то явно указывать UNION DISTINCT/UNIQUE

недочет орякля/стандарта

.....
stax

+1
До смешного доходит:
with t as
(select 1 id from dual
 union all
 select 1 from dual)
select * from t

id
1
1
with t as
(select 1 id from dual
 union all
 select 1 from dual)
select * from t
union 
select * from t

id
1

Вроде как хотел увеличить количество строк, а оно уменьшилось :)
3 май 17, 16:35    [20453853]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
stax..
Guest
Vint
stax..,softwarer,
хорошо судить с высоты опыта)) но вы не думаете что тогда был бы другой часто задаваемый вопрос. как мне удалить дубли при объединении запросов)))

ответ
вместо union [all]
указать union DISTINCT

імхо
часто all не придают должного внимания,
напр в выборках есть ключ, считают что все ок, какая нах разница
в результате как минимум лишняя сортировка

иногда банальная очепятка/лентяйство

......
stax
3 май 17, 16:37    [20453868]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
stax..
Guest
XMLer,

мне больше нравится хто последний
SQL> ed
Wrote file afiedt.buf

  1  select 1 id from dual
  2  union all
  3  select 1 from dual
  4  union
  5* select 2 from dual
SQL> /

        ID
----------
         1
         2



......
stax
3 май 17, 16:51    [20453908]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
-2-
Member

Откуда:
Сообщений: 14504
Vint
как мне удалить дубли при объединении запросов
тогда логично было и select сделать по умолчанию distinct.
3 май 17, 17:25    [20454051]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18014
А как насчет MINUS?
4 май 17, 13:13    [20456672]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 50847
-2-
Vint
как мне удалить дубли при объединении запросов
тогда логично было и select сделать по умолчанию distinct.
и расширить через SELECT ALL
4 май 17, 17:46    [20457954]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
Vint
Member

Откуда: Москва
Сообщений: 4545
andreymx,XMLer,-2-
а почему тогда вы не пишете что в minus и intersect тоже надо сделать с all?
WITH t AS
 (SELECT 1 a
    FROM dual
  UNION ALL
  SELECT 1 a
    FROM dual
  UNION ALL
  SELECT 1 FROM dual),
y AS
 (SELECT 1 FROM dual)
SELECT *
  FROM t
MINUS
SELECT * FROM y

WITH t AS
 (SELECT 1 a
    FROM dual
  UNION ALL
  SELECT 1 a
    FROM dual
  UNION ALL
  SELECT 1 FROM dual),
y AS
 (SELECT 1 FROM dual)
SELECT *
  FROM t
intersect
SELECT * FROM y

если рассматривать с этой точки зрения, то ваша реализация union будет выбиваться из общей логики. но как вы сделаете операции minus и intersect без distinct?) предлагаю блеснуть)))
4 май 17, 18:04    [20458015]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
multiset union/intersect/except
Guest
Vint
как вы сделаете операции minus и intersect без distinct?
Гонор тебя подводит. В sql-стандарте как раз поведение union, intersect и except прописано и для all и для distinct.
4 май 17, 18:49    [20458153]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
stax..
Guest
Vint

если рассматривать с этой точки зрения, то ваша реализация union будет выбиваться из общей логики. но как вы сделаете операции minus и intersect без distinct?) предлагаю блеснуть)))


а что тут блестать, дубли не удаляем

.....
stax
5 май 17, 09:29    [20459249]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
Vint
Member

Откуда: Москва
Сообщений: 4545
multiset union/intersect/except,
лучше гонор чем мозги и боязнь зарегиться) и ссылку с четким описанием дай мне сирому... а то найти какие две из трех записей при minus оставить я как то со своим гонором не соображу.

stax..
вот в том то и дело, что люди решили "единообразно безобразно" и если смотреть с их колокольни, то все верно написано.
5 май 17, 10:37    [20459586]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
XMLer
Member

Откуда:
Сообщений: 258
Vint
andreymx,XMLer,-2-
а почему тогда вы не пишете что в minus и intersect тоже надо сделать с all?

Повеселил :) .
А почему ты не пишешь что dual должна содержать 2 строки?
5 май 17, 10:58    [20459725]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
stax..
Guest
Vint
multiset union/intersect/except,
лучше гонор чем мозги и боязнь зарегиться) и ссылку с четким описанием дай мне сирому... а то найти какие две из трех записей при minus оставить я как то со своим гонором не соображу.

stax..
вот в том то и дело, что люди решили "единообразно безобразно" и если смотреть с их колокольни, то все верно написано.


в t1 1,2,2,2,3,4,4,4
в t2 2,4,4,5
t1 minus t2 1,2,2,3,4



.....
stax
5 май 17, 11:05    [20459761]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
-2-
Member

Откуда:
Сообщений: 14504
Vint
multiset union/intersect/except,
лучше гонор чем мозги и боязнь зарегиться) и ссылку с четким описанием дай мне сирому... а то найти какие две из трех записей при minus оставить я как то со своим гонором не соображу.
читай в доке оракла описание оператора multiset, который, в отличие от set-операторов со строками, сделан по стандарту вплоть до except вместо minus:
MULTISET EXCEPT
The ALL keyword instructs Oracle to return all elements in nested_table1 that are not in nested_table2. For example, if a particular element occurs m times in nested_table1 and n times in nested_table2, then the result will have (m-n) occurrences of the element if m >n and 0 occurrences if m<=n. ALL is the default.
MULTISET INTERSECT
The ALL keyword instructs Oracle to return all common occurrences of elements that are in the two input nested tables, including duplicate common values and duplicate common NULL occurrences. For example, if a particular value occurs m times in nested_table1 and n times in nested_table2, then the result would contain the element min(m,n) times. ALL is the default.
5 май 17, 11:20    [20459817]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
Vint
Member

Откуда: Москва
Сообщений: 4545
XMLer,
да хоть четыре. я ориентируюсь не на стандарт а на реальность. если бы было написано что в дуал 2 строки работали бы с двумя. хотя в дуал может вообще не быть строк...

stax..
а почему ты оставил вторую и третью двойки и удалил первую? может мне надо было 1-3 а вторую оставить.))

-2-
ты правда уверен что стандарт(о котором ты говоришь) был принят раньше, чем в оракле появились операции union minus intersect? в оракле слишком много "так исторически сложившихся" вещей которые никто переделывать уже не будет хотя бы из обратной совместимости.(Rdb 7.1 adds the optional keyword DISTINCT. UNION and UNION DISTINCT are identical
operations. This is part of the ANSI and ISO SQL:1999 Database Language Standard)
5 май 17, 13:08    [20460399]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
-2-
Member

Откуда:
Сообщений: 14504
Vint
может мне надо было 1-3 а вторую оставить.))
скобочки это как "смех за кадром" - указывает, что автор уверен, шутка не будет принята.

Vint
был принят раньше
попытка увести в строну от темы "как вы сделаете операции". В set-операциях distinct/all формализуем и формализован.
5 май 17, 13:27    [20460488]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
stax..
Guest
Vint
stax..
а почему ты оставил вторую и третью двойки и удалил первую? может мне надо было 1-3 а вторую оставить.))

нет
я удалил третью двойку, первую и вторую оставил

.....
stax
5 май 17, 13:39    [20460526]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
Vint
Member

Откуда: Москва
Сообщений: 4545
-2-,
ок. сделал. но теперь остается проблема с "так исторически сложившимися" операторами. и да я понимаю как можно было сделать. но логика того что уже сделана тоже есть. я бы понял если бы в совершенно новой СУБД сделали бы так же, но как переделать это сейчас применительно к ораклу с обратной совместимостью не понимаю... твоя то позиция ясна и проста.
Что-то понял что дальше нет смысла писать, разговор ни о чем.

stax..
от жеж... не рассмотрел..... старый стал, однако)
5 май 17, 13:57    [20460619]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18014
stax..
Vint
stax..
а почему ты оставил вторую и третью двойки и удалил первую? может мне надо было 1-3 а вторую оставить.))

нет
я удалил третью двойку, первую и вторую оставил

.....
stax
не знаю
Мне показалось, что ты оставил именно вторую двойку
А это, согласись, ни под какой стандарт не попадает
9 май 17, 12:54    [20466365]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2091
Просто посмеяться. DOS-атака на Oracle :))
declare
	c sys_refcursor;
begin
	open c for
		select *
			from xmltable(
				'/A'
				passing (select column_value from table(xmlsequence(c, XMLFormat('A'))))
				columns
					x number path '/A/X');
end;
[Error] Execution (1: 3): ORA-03113: end-of-file on communication channel
30 июн 17, 23:00    [20604565]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28823
--Eugene--
DOS-атака на Oracle :))
пятничная задачка - убить себя одним SELECT-ом
1 июл 17, 07:35    [20604718]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
щен
Guest
Жила-была Лена учащаяся.
К знаниям очень охочая,
В общении шибко хохочая.

Девушка была прекрасная,
Погода была ужасная.
Днем, во втором часу,
Заблудилась в оракловом лесу.

Смотрит форум в лесу завлекательный,
А на форуме люд привлекательный.
Задает вопрос несуразнейший
Словно троль с пэте ужаснейший.
Завсегдатаи в крик, дело ясное,
Бац ... то не дева была прекрасная.
15 авг 17, 10:04    [20724116]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
Озо
Guest
щен,

А почему именно Лена?
15 авг 17, 19:03    [20726306]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
восхищенный читатель кода
Guest
Чудо-код. Особенно доставляет, что функция приватная и потом вызывается только один раз (хотя и без того прекрасно).
    function GetSymbolByCode(p_code number) return varchar2 is
      Key varchar2(1);
    begin
      select z.nm_value into Key
       from 
      ( 
       select 0 kd_value, '%' nm_value from dual
       union all
       select 1 kd_value, CHR(9) nm_value from dual --<TAB>
       ) z
        where kd_value = p_code;
      Return(Key);
    end GetSymbolByCode;   
11 дек 17, 09:37    [21023228]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 50847
восхищенный читатель кода,

я видел самописную функцию, которая считает AVG
11 дек 17, 09:48    [21023251]     Ответить | Цитировать Сообщить модератору
 Re: Извините за офтоп. Просто посмеяться  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1712
восхищенный читатель кода,

в чем оффтоп? select into Key вместо if / elseif Key:= ?

.....
stax
11 дек 17, 11:15    [21023444]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 82 83 84 85 86 87 [88] 89 90 91   вперед  Ctrl
Все форумы / Oracle Ответить