Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Исключить из выборки поле  [new]
b10s
Member

Откуда:
Сообщений: 108
Здравствуйте,

имеется таблица с неопределенным количеством столбцов. Расширяю её путем использования RANK(). В итоге всех манипуляция мне нужно выбрать те столбцы, которые были в таблице изначально. Т.е. необходимо исключить столбец, который я добавил.

Пример:

select {что тут указать, чтобы выбрать всё кроме ranchik} from
( select *, rank() over(order by some_field) as ranchik ) a
31 окт 13, 10:37    [15056936]     Ответить | Цитировать Сообщить модератору
 Re: Исключить из выборки поле  [new]
Glory
Member

Откуда:
Сообщений: 104751
b10s
{что тут указать, чтобы выбрать всё кроме ranchik}

указать только нужные поля
31 окт 13, 10:45    [15056997]     Ответить | Цитировать Сообщить модератору
 Re: Исключить из выборки поле  [new]
b10s
Member

Откуда:
Сообщений: 108
Glory
b10s
{что тут указать, чтобы выбрать всё кроме ranchik}

указать только нужные поля


Спасибо, кэп :) но эти поля неизвестны, как я и сказал выше ;)
31 окт 13, 11:02    [15057091]     Ответить | Цитировать Сообщить модератору
 Re: Исключить из выборки поле  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Можно:
1. Написать на connect соответствующее предложение и подождать пока MS его реализует.
2. Сформировать запрос динамически.
31 окт 13, 11:37    [15057362]     Ответить | Цитировать Сообщить модератору
 Re: Исключить из выборки поле  [new]
b10s
Member

Откуда:
Сообщений: 108
3) использовать системное описание схемы таблицы
31 окт 13, 12:57    [15057944]     Ответить | Цитировать Сообщить модератору
 Re: Исключить из выборки поле  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
b10s
3) использовать системное описание схемы таблицы

один фиг ето пункт 2 и предидущего поста
31 окт 13, 13:08    [15058039]     Ответить | Цитировать Сообщить модератору
 Re: Исключить из выборки поле  [new]
b10s
Member

Откуда:
Сообщений: 108
Maxx,

выходит так. Но обратно развернуть эту логику невозможно :)

Т.е. указать нужные поля не значит обратиться к системному описанию схемы таблицы и на основании этой инфы собрать запрос.
Однако, обращение к структуре таблицы и динамическая сборка запроса означает указание нужных полей.

;)
31 окт 13, 13:32    [15058288]     Ответить | Цитировать Сообщить модератору
 Re: Исключить из выборки поле  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
b10s
Однако, обращение к структуре таблицы и динамическая сборка запроса означает указание нужных полей.
Нет, это означает, что можно указать только ненужные поля.
31 окт 13, 14:02    [15058622]     Ответить | Цитировать Сообщить модератору
 Re: Исключить из выборки поле  [new]
Glory
Member

Откуда:
Сообщений: 104751
b10s
Glory
пропущено...

указать только нужные поля


Спасибо, кэп :) но эти поля неизвестны, как я и сказал выше ;)

Мне всегда было интересно - что же можно делать с неизвестным набором данных ?
31 окт 13, 14:08    [15058675]     Ответить | Цитировать Сообщить модератору
 Re: Исключить из выборки поле  [new]
b10s
Member

Откуда:
Сообщений: 108
invm
b10s
Однако, обращение к структуре таблицы и динамическая сборка запроса означает указание нужных полей.
Нет, это означает, что можно указать только ненужные поля.


сказанное было в контексте фразы

"один фиг ето пункт 2 и предидущего поста", которая отсылает к "2. Сформировать запрос динамически. ". которая отвечает на эту часть моего вопроса "{что тут указать, чтобы выбрать всё кроме ranchik}". Вывод: мы ведем речь о вычленении ТОЛЬКО нужных полей. Но, ничего нам не мешает вычленить ненужные. Или мешает?) Но нужно ли нам это?!
31 окт 13, 14:10    [15058684]     Ответить | Цитировать Сообщить модератору
 Re: Исключить из выборки поле  [new]
b10s
Member

Откуда:
Сообщений: 108
Glory
b10s
пропущено...


Спасибо, кэп :) но эти поля неизвестны, как я и сказал выше ;)

Мне всегда было интересно - что же можно делать с неизвестным набором данных ?


Ну ок :) Пока есть время, можно вылезти из контекста задачи и обрисовать ситуацию.

Создается представление на таблицу в которой число столбцов может меняться. Да и знать их все не обязательно. Они должны быть. Но есть один столбец, который там будет всегда. На его основе нужно произвести вычисления. В результате этих вычислений мы расширяем таблицу посредством функции RANK(). В итоге мы получаем массив данных с неизвестной структурой Y. Исходный массив был со структурой X. Так вот. Y нужно обратно привести к X.
31 окт 13, 14:23    [15058757]     Ответить | Цитировать Сообщить модератору
 Re: Исключить из выборки поле  [new]
Glory
Member

Откуда:
Сообщений: 104751
b10s
Создается представление на таблицу в которой число столбцов может меняться. Да и знать их все не обязательно.

Дальше можно не читать. Непрофессиональный подход.
31 окт 13, 14:28    [15058800]     Ответить | Цитировать Сообщить модератору
 Re: Исключить из выборки поле  [new]
Гость333
Member

Откуда:
Сообщений: 3683
b10s,

А если представление останется со структурой Y (которое, как я понял, есть X плюс ещё один столбец), то сервер взорвётся?
31 окт 13, 14:29    [15058810]     Ответить | Цитировать Сообщить модератору
 Re: Исключить из выборки поле  [new]
qwerty112
Guest
b10s
Создается представление на таблицу в которой число столбцов может меняться.

под "представление", вы, "здеся" - что-то "своё" имеете в виду ?
не то же самое, что вью (представление) в стандартном понимании ?
31 окт 13, 14:30    [15058825]     Ответить | Цитировать Сообщить модератору
 Re: Исключить из выборки поле  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31961
b10s
Ну ок :) Пока есть время, можно вылезти из контекста задачи и обрисовать ситуацию.

Создается представление на таблицу в которой число столбцов может меняться. Да и знать их все не обязательно. Они должны быть. Но есть один столбец, который там будет всегда. На его основе нужно произвести вычисления. В результате этих вычислений мы расширяем таблицу посредством функции RANK(). В итоге мы получаем массив данных с неизвестной структурой Y. Исходный массив был со структурой X. Так вот. Y нужно обратно привести к X.
Вы пример конкретный приведите.

Если вам не нужно поле RANK(), но вы его хотите использовать, тогда и надо его использовать, но не добавлять к выходному набору.

Хотя так не всегда можно сделать, тогда без вариантов, такой функциональности нет (видимо, никому не нужна, чем лишний столбец помешает?).
31 окт 13, 14:36    [15058882]     Ответить | Цитировать Сообщить модератору
 Re: Исключить из выборки поле  [new]
b10s
Member

Откуда:
Сообщений: 108
Glory
b10s
Создается представление на таблицу в которой число столбцов может меняться. Да и знать их все не обязательно.

Дальше можно не читать. Непрофессиональный подход.


1. Почему?
2. Какой подход вы считаете профессиональным, применительно к данной задаче? Спрашиваю потому, что оценку непрофессионализма вы смогли дать имея эти исходные данные. Значит существует оценка професионализма. Озвучьте её, пжлста.
31 окт 13, 14:37    [15058894]     Ответить | Цитировать Сообщить модератору
 Re: Исключить из выборки поле  [new]
b10s
Member

Откуда:
Сообщений: 108
Гость333
b10s,

А если представление останется со структурой Y (которое, как я понял, есть X плюс ещё один столбец), то сервер взорвётся?


Не желательно. Зачем нам лишние данные?! Когда их будет овердохуя, то скорость работы будет падать существенно. Вы так не считаете?)
31 окт 13, 14:39    [15058900]     Ответить | Цитировать Сообщить модератору
 Re: Исключить из выборки поле  [new]
b10s
Member

Откуда:
Сообщений: 108
qwerty112
b10s
Создается представление на таблицу в которой число столбцов может меняться.

под "представление", вы, "здеся" - что-то "своё" имеете в виду ?
не то же самое, что вью (представление) в стандартном понимании ?


позволю себе не тратить время на понимание сказанного, т.к. вы не потратили время на регистрацию и изложение своей мысли в доступном виде :)
31 окт 13, 14:40    [15058914]     Ответить | Цитировать Сообщить модератору
 Re: Исключить из выборки поле  [new]
qwerty112
Guest
b10s
qwerty112
пропущено...

под "представление", вы, "здеся" - что-то "своё" имеете в виду ?
не то же самое, что вью (представление) в стандартном понимании ?


позволю себе не тратить время на понимание сказанного, т.к. вы не потратили время на регистрацию и изложение своей мысли в доступном виде :)

что жж тебе не понятно, дружище :)

транслирую доступно:
- когда ты говоришь слово "представление" - ты имеешь в виду, то, что в СКЛ сервере создаётся инструкцией - create view ??

если (недай Б-г) - "Да", то каким способом, у этого представления, будет "число столбцов может меняться" (с) ?
как ты собираешься это "меняться" реализовать ?
31 окт 13, 14:44    [15058955]     Ответить | Цитировать Сообщить модератору
 Re: Исключить из выборки поле  [new]
b10s
Member

Откуда:
Сообщений: 108
alexeyvg

Вы пример конкретный приведите.

Если вам не нужно поле RANK(), но вы его хотите использовать, тогда и надо его использовать, но не добавлять к выходному набору.

Хотя так не всегда можно сделать, тогда без вариантов, такой функциональности нет (видимо, никому не нужна, чем лишний столбец помешает?).


Более конкретный пример в топике темы. Конкретнее - не имеет смысл. Тут нужно абстрагироваться.

На вопрос про лишний столбец выше ответ.
31 окт 13, 14:49    [15058985]     Ответить | Цитировать Сообщить модератору
 Re: Исключить из выборки поле  [new]
b10s
Member

Откуда:
Сообщений: 108
qwerty112,

вот так и пытаюсь, как пишу здесь ;)
31 окт 13, 14:50    [15058992]     Ответить | Цитировать Сообщить модератору
 Re: Исключить из выборки поле  [new]
Glory
Member

Откуда:
Сообщений: 104751
b10s
Glory
пропущено...

Дальше можно не читать. Непрофессиональный подход.


1. Почему?
2. Какой подход вы считаете профессиональным, применительно к данной задаче? Спрашиваю потому, что оценку непрофессионализма вы смогли дать имея эти исходные данные. Значит существует оценка професионализма. Озвучьте её, пжлста.

В проф.системах даже изменение точности существующих полей ведет к impact analyze. т.е. к проверке и изменению всех "дочерних" объектов и программного кода
31 окт 13, 14:54    [15059017]     Ответить | Цитировать Сообщить модератору
 Re: Исключить из выборки поле  [new]
qwerty112
Guest
b10s
qwerty112,

вот так и пытаюсь, как пишу здесь ;)

ещё раз !
"так и пытаешься" во вью ?

всмотрись в скриптик, может так что-то доходить начнёт ...
set nocount on

create table t (id int)
go
insert into t select 1
go
create view vt as select * from t
go
select * from t
select * from vt
go
alter table t add txt varchar(10)
go
select * from t
select * from vt
go
drop view vt
go
drop table t
go

id
-----------
1

id
-----------
1

id          txt
----------- ----------
1           NULL

id
-----------
1
31 окт 13, 14:54    [15059022]     Ответить | Цитировать Сообщить модератору
 Re: Исключить из выборки поле  [new]
b10s
Member

Откуда:
Сообщений: 108
Glory
b10s
пропущено...


1. Почему?
2. Какой подход вы считаете профессиональным, применительно к данной задаче? Спрашиваю потому, что оценку непрофессионализма вы смогли дать имея эти исходные данные. Значит существует оценка професионализма. Озвучьте её, пжлста.

В проф.системах даже изменение точности существующих полей ведет к impact analyze. т.е. к проверке и изменению всех "дочерних" объектов и программного кода


Кажется мне, что как раз таки это не проф. решения, т.к. части этого решения зависят друг от друга слишком сильно. Разделяй и властвуй ;) Или вот, например, философия UNIX - создавай решения для маленьких задач, пусть они будут делать немного, но делать это хорошо и независимо.

Вот тогда ты сможешь добиться стабильной работы твоей системы. Чего и требует проф. подход :) но у каждого свои понятия "хорошо" и "плохо", так же и как профессионализма ;)
31 окт 13, 15:03    [15059073]     Ответить | Цитировать Сообщить модератору
 Re: Исключить из выборки поле  [new]
Glory
Member

Откуда:
Сообщений: 104751
b10s
Кажется мне, что как раз таки это не проф. решения, т.к. части этого решения зависят друг от друга слишком сильно. Разделяй и властвуй ;) Или вот, например, философия UNIX - создавай решения для маленьких задач, пусть они будут делать немного, но делать это хорошо и независимо.

Вы сколько систем написали ?
Сколько раз вы сталкивались хотя бы с элементарной ошибкой переполнения итоговой суммы в каком нибудь отчете потому, что в какой то базовой таблице изменили тип поля с smallint на int ? Или в представлении поменяли один cast на другой ? Или кто-то "оптимизировал" процедуру
31 окт 13, 15:07    [15059090]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить