Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
Подскажите, пожалуйста, если в выборку добавляется динамическое поле поисковым выражением CASE, то можно ли по этому полю тут же поставить условие? Если можно, то как? У меня поле формируется (и всё равно =case, или case as) , но при добавлении условия на это поле сообщается, что оно Invalid column name Ну это не исходник, но упрщённо что-то типа такого: Код: sql 1. 2. 3. 4. 5. 6. 7. Без where отрабатывает, с where - Invalid column name 'Field5'. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 03:27 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 04:40 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
rtv, 1) Вложить запрос в подзапрос. Во внешнем запросе наложить условие фильтрации по полю, вычисленному внутренним запросом. Код: sql 1. 2. 3. 2) Сделать всё тоже самое, но через СТЕ: Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 04:42 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
3) можно ведь при желании если есть необходимость экономии памяти на промежуточных наборах - заменить дополнительной нагрузкой на повторное вычисление всего case, типа: Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 05:03 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
vikkiv, Да не будет там никаких промежуточных наборов ни с CTE, ни с derived table - оптимизатор все равно все развернет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 05:46 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 10:08 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
nullin Код: sql 1. 2. 3. 4. 5. 6. Есть какой-то сакральный смысл в таком выражении мыслей в терминах SQL? Мне кажется, это выглядит доступнее для понимания... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 11:34 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
Руслан ДамировичЕсть какой-то сакральный смысл в таком выражении мыслей в терминах SQL? Мне кажется, это выглядит доступнее для понимания...В терминах SQL подзапросы, ИМХО, выглядят нативнее и понятнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 12:02 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
alexeyvgРуслан ДамировичЕсть какой-то сакральный смысл в таком выражении мыслей в терминах SQL? Мне кажется, это выглядит доступнее для понимания...В терминах SQL подзапросы, ИМХО, выглядят нативнее и понятнее.То есть, я имел в виду не эти 2 варианта CROSS APPLY, а, например, это: Щукина Анна1) Вложить запрос в подзапрос. Во внешнем запросе наложить условие фильтрации по полю, вычисленному внутренним запросом. Код: sql 1. 2. 3. 2) Сделать всё тоже самое, но через СТЕ: Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 12:03 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
alexeyvgВ терминах SQL подзапросы, ИМХО, выглядят нативнее и понятнее. Я имел в виду конкретно ( CROSS APPLY - SELECT FROM VALUES ) - подзапрос в подзапросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 12:15 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
rtv, Код: sql 1. 2. 3. 4. Такое делать категорически неверно, т.к. поля не должны зависеть друг от друга. Верным решение было бы провести нормализацию таблиц и переписать запросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 12:54 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовТакое делать категорически неверно, т.к. поля не должны зависеть друг от друга. интересно, где таким гениальным выводам учат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 13:00 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
Владислав Колосовrtv, Код: sql 1. 2. 3. 4. Такое делать категорически неверно, т.к. поля не должны зависеть друг от друга. Верным решение было бы провести нормализацию таблиц и переписать запросы. Владислав, это же не код, это очень упрощённый пример для задания вопроса - можно ли поле, сформированное CASE, использовать в том же select, в котором оно формируется. Похоже, что нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 13:20 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
Всем спасибо. Всё понятно. Одним селектом не выкрутишься... Какой вариант логичнее, сакральнее, оптимальнее я оценить не могу. Меня пока все рабочие устраивают ... Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 13:48 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
rtvВсё понятно. Одним селектом не выкрутишься...Все приведенные варианты и есть "один select" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 13:52 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
" можно ли поле, сформированное CASE, использовать в том же select, в котором оно формируется? " select список_полей Считается, что все поля в этом списке полей для каждой строки вычисляются в один и тот же момент времени, причем порядок их вычисления не фиксируется. Поэтому НЕЛЬЗЯ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 14:08 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
Wlr-l, Что касается самого первого поста, то нужно вспомнить о логических стадиях выполнения запроса. Предложение select хотя и стоит первым, но выполняется практически последним (о сортировке не забыть бы), поэтому в предложении where, которое выполняется раньше, алиасы полей не доступны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 14:18 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
invmrtvВсё понятно. Одним селектом не выкрутишься...Все приведенные варианты и есть "один select" invm, запрос один, а операторов select 2. Wlr-l уже тут подытожил, внутри оператора select динамическое поле недоступно. Только если обратиться к результату этого select снаружи -"Одним селектом не выкрутишься.." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 14:22 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
Wlr-lWlr-l, Что касается самого первого поста, то нужно вспомнить о логических стадиях выполнения запроса. Предложение select хотя и стоит первым, но выполняется практически последним (о сортировке не забыть бы), поэтому в предложении where, которое выполняется раньше, алиасы полей не доступны. Wlr-l, Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 14:26 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
rtv, Почему же? "Динамическое поле", т. е. алиас вполне доступен на стадии сортировки, так как она выполняется после стадии select. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 14:26 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 14:28 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
rtvinvm, запрос один, а операторов select 2. Wlr-l уже тут подытожил, внутри оператора select динамическое поле недоступно. Только если обратиться к результату этого select снаружи -"Одним селектом не выкрутишься.." ой, да ладно. один select Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 14:29 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
Очень много советов "как это можно сделать", но нужно объяснить ТС почему конструкция select field as a from table where a=value не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 14:38 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
Wlr-lОчень много советов "как это можно сделать", но нужно объяснить ТС почему конструкция select field as a from table where a=value не работает. так вы ж уже про алиас и порядок обработки написали можно и доку показать https://docs.microsoft.com/ru-ru/sql/t-sql/queries/select-transact-sql?view=sql-server-2017#logical-processing-order-of-the-select-statement там ясно написано Conversely, because the SELECT clause is step 8, any column aliases or derived columns defined in that clause cannot be referenced by preceding clauses ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 14:40 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
ПосетительВладислав КолосовТакое делать категорически неверно, т.к. поля не должны зависеть друг от друга. интересно, где таким гениальным выводам учат. Ваше предложение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 16:15 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовПосетительпропущено... интересно, где таким гениальным выводам учат. Ваше предложение? руководствоваться не религиозными убеждениями, а поставленными задачами и возможностями имеющихся инструментов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 16:18 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
Посетитель, Совершенно верно. Поэтому и было указано автору на грубую ошибку проектирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 16:32 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
что тут грубого то? ТС просто разбирается что и как, вопросы задаёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 16:35 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовПосетитель, Совершенно верно. Поэтому и было указано автору на грубую ошибку проектирования. с каких пор использование case - грубая ошибка проектирования? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 16:37 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
Посетитель, ошибка в том, что при таком подходе значение атрибута не может быть определено для любого значения ключа. Т.е. у автора не реляционное отношение, а экселевская таблица, к которой реляционная алгебра неприменима. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 16:49 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовПосетитель, ошибка в том, что при таком подходе значение атрибута не может быть определено для любого значения ключа. Т.е. у автора не реляционное отношение, а экселевская таблица, к которой реляционная алгебра неприменима. у автора - выборка данных а у вас - религия поклонения нормальным формам вопреки здравому смыслу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 16:52 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
Посетитель, если нужны подобные вычисления, то надо организовать вычисляемый столбец. Вы утрируете, математика сервера призвана удовлетворять требованиям реляционной алгебры, а кустарному творчеству и работает эффективно в случае, если разработчик следует существующим правилам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 16:56 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовПосетитель, ошибка в том, что при таком подходе значение атрибута не может быть определено для любого значения ключа. Т.е. у автора не реляционное отношение, а экселевская таблица, к которой реляционная алгебра неприменима. Не следует слепо следовать догмам из сомнительных источников. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 16:59 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
Владислав Колосов, "если нужны подобные вычисления, то надо организовать вычисляемый столбец" А если это нужно в одном запросе из сотни других для этой таблицы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 17:02 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
может ТСу ещё про вычисляемый столбец в таблице будем рассказывать? каждое решение уместно в рамках конкретных требований ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 17:03 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
Konst_Oneможет ТСу ещё про вычисляемый столбец в таблице будем рассказывать? А еще можно вьюху создать. Или вообще inline table-valued UDF. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 17:10 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
fkthatKonst_Oneможет ТСу ещё про вычисляемый столбец в таблице будем рассказывать? А еще можно вьюху создать. Или вообще inline table-valued UDF. +100 =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 17:11 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
Люди, ну о чём спор? Приведённый текст - не код запроса, этот текст здесь же на форуме был написан для примера и заключён в скобочки src, просто для наглядности. Реально там, действительно не один десяток таблиц связывается, и денормализация напрашивалась бы, и вьюхи можно, и временные таблицы можно, а я вообще в Delphi пишу, там ещё чёрта лысого можно, но это не имеет никакого отношения к техническому вопросу использования динамического поля внутри порождающего его select. Wlr-l, вполне объяснил. Спасибо! Shakill в доки ткнул. Спасибо! Другие люди привели варианты обращения к такому полю. Спасибо! Но говорить о грубых ошибках проектирования не вид проекта вообще, это сильно. Несколько раз же было сказано, что не код запроса приведён, а, видимо, неудачная иллюстрация вопроса. Но тут с какой стороны посмотреть - поскольку мне сразу ответили, не переспрашивая, не уточняя, то и вполне для меня удачная ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 20:41 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
rtv, Не знаю насчет ошибок проектирования, но условия по полям, вычисленным в запросе через CASE это почти гарантированные проблемы с произодительностью в дальнейшем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 22:56 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
Mindrtv, Не знаю насчет ошибок проектирования, но условия по полям, вычисленным в запросе через CASE это почти гарантированные проблемы с произодительностью в дальнейшем.А материализация и индексация каждого case -- это почти гарантированные неудобные вопросы от начальства "как, ^%*№$, опять надо N-цать тыщ долларов на расширение SSD-хранилища?" Везде нужна золотая середина, тем более техник фиксации плана -- мульен, тележка и ведро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 23:02 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
rtvНо говорить о грубых ошибках проектирования не вид проекта вообще, это сильно.+1 Не обязательно будут проблемы с производительностью, ведь это условие может быть, так сказать, "финишным", отсеивающим 5 записей из 10 Не всегда возможно сделать вычисляемое поле, потому что выражение может быть из полей множества таблиц. Не во всех случаях нужно делать материализроованные вьюхи на каждый запрос, ведь запрос может выполняться редко, да и план может быть не таким плохим. В общем, нужно видеть весь проект, а не принимать каждый отдельный (и удачный) приём, как обязательный к повторению шаблон проектирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 23:35 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
Mindrtv, Не знаю насчет ошибок проектирования, но условия по полям, вычисленным в запросе через CASE это почти гарантированные проблемы с произодительностью в дальнейшем. В дальнейшем - это про что? Память забивает сразу, или при масштабировании, или что за проблемы? Ситуация и специфика задач у нас, действительно, позволяют не особо следить за такими вещами (что плохо, конечно). А конкретно тот запрос с условным отбором, на который ещё условия (который здесь и не выкладывался даже) - вообще доступен только для одного пользователя. Я сразу забираю результат запроса на клиент, могу и без условий забирать. Но для общего развития интересно - именно задание условий на такие поля - плохо? Или вообще конструкция такого условного отбора в динамическое поле - ну вот совсем плохая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 23:48 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
alexeyvgrtvНо говорить о грубых ошибках проектирования не вид проекта вообще, это сильно.+1 Не обязательно будут проблемы с производительностью, ведь это условие может быть, так сказать, "финишным", отсеивающим 5 записей из 10 Не всегда возможно сделать вычисляемое поле, потому что выражение может быть из полей множества таблиц. Не во всех случаях нужно делать материализроованные вьюхи на каждый запрос, ведь запрос может выполняться редко, да и план может быть не таким плохим. В общем, нужно видеть весь проект, а не принимать каждый отдельный (и удачный) приём, как обязательный к повторению шаблон проектирования. Про логику с финишными условиями. У меня по тому динамическому полю отсеиваются всё с пустым полем. То есть интересно то, куда что-то отобралось при условном отборе, и да из кучи таблиц. И отсеется больше, чем останется. И вот это плохо? Или когда будет не так плохо с "финишным" условием - когда по нему отсеется большинство записей, или наоборот? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 23:59 |
|
||
|
как задать условие на динамически создаваемое поле?
|
|||
|---|---|---|---|
|
#18+
Руслан ДамировичalexeyvgВ терминах SQL подзапросы, ИМХО, выглядят нативнее и понятнее. Я имел в виду конкретно ( CROSS APPLY - SELECT FROM VALUES ) - подзапрос в подзапросе. Там cross/outer apply в итоге переключает поведение по типу inner/left join. А так, да, под конкретную задачу с финальным условием, так наверно, сложней для понимания получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2019, 00:58 |
|
||
|
|

start [/forum/topic.php?all=1&fid=46&tid=1687752]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
131ms |
get topic data: |
12ms |
get forum data: |
4ms |
get page messages: |
99ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 521ms |

| 0 / 0 |
