Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Declare и With / 21 сообщений из 21, страница 1 из 1
11.06.2021, 12:46
    #40077157
Bereteli
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Declare и With
Добрый день всем.
Постоянно в своих запросах использую промежуточные таблицы через WITH. Иногда количество повторяющихся значений высокое, и их нужно изменять.

Вопрос в том, что как бы я не пытался, у меня не выходит использовать declare/set вместе c WITH.

Может есть альтернативное решение. Для примера пусть будет запрос

with newtable as (Select
lvl,
tovar
from table1
where lvl = 2
union all
lvl,
tovar
from table2
where lvl = 2)
Select * from newtable


Как ввести в первые две таблицы declare, что бы менять значения lvl сразу для всех

П.С. Решение в стиле промежуточной таблицы и inner join я знаю)
...
Рейтинг: 0 / 0
11.06.2021, 12:59
    #40077170
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Declare и With
Bereteli,

WITH - это просто часть SELECT, INSERT, DELETE, UPDATE или MERGE.
В этих командах есть место DECLARE или SET? Нет.
Так что используйте их перед WITH (и обязательно завершайте точкой с запятой!)
...
Рейтинг: 0 / 0
11.06.2021, 13:01
    #40077173
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Declare и With
Bereteli,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
declare @lvl int = 2;

with newtable as (Select
lvl,
tovar
from table1
where lvl = @lvl
union all
lvl,
tovar
from table2
where lvl = @lvl)
Select * from newtable;
...
Рейтинг: 0 / 0
11.06.2021, 14:56
    #40077226
Bereteli
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Declare и With
Владислав Колосов,

Спасибо и всем кто отписался, про ";" и не подумал(

Не могли бы вы мне подсказать, как такой деклер ввести в рекурсию?
...
Рейтинг: 0 / 0
11.06.2021, 15:07
    #40077228
Кесарь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Declare и With
Bereteli
Владислав Колосов,

Спасибо и всем кто отписался, про ";" и не подумал(

Не могли бы вы мне подсказать, как такой деклер ввести в рекурсию?


Что вы хотите сделать русским словами?

Вести деклар в запрос нельзя.
...
Рейтинг: 0 / 0
11.06.2021, 15:28
    #40077233
Bereteli
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Declare и With
Кесарь,
хотелось бы вот так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
declare @lvl INT  = 50;

with cte AS(
SELECT 
1 AS lvl

UNION ALL 
SELECT lvl+1
FROM cte
WHERE LVL < @lvl)

SELECT *
FROM cte
...
Рейтинг: 0 / 0
11.06.2021, 15:31
    #40077234
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Declare и With
Bereteli
Кесарь,
хотелось бы вот так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
declare @lvl INT  = 50;

with cte AS(
SELECT 
1 AS lvl

UNION ALL 
SELECT lvl+1
FROM cte
WHERE LVL < @lvl)

SELECT *
FROM cte
ээээ, ... и что останавливает ?
...
Рейтинг: 0 / 0
11.06.2021, 16:00
    #40077239
Bereteli
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Declare и With
court,

пишет, что необходимо объявить скалярную переменную @lvl
...
Рейтинг: 0 / 0
11.06.2021, 16:21
    #40077248
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Declare и With
вы где это пытаетесь выполнять?
...
Рейтинг: 0 / 0
11.06.2021, 16:21
    #40077249
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Declare и With
Bereteli
court,

пишет, что необходимо объявить скалярную переменную @lvl
ты её объявил

Кто пишет ? Где пишет ? Где ты это выполняешь ?
...
Рейтинг: 0 / 0
11.06.2021, 16:24
    #40077250
Кесарь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Declare и With
Bereteli
court,

пишет, что необходимо объявить скалярную переменную @lvl


Очень странно. Вы в SSMS это делаете? Представленный кусок кода выглядит вполне рабочим.
...
Рейтинг: 0 / 0
11.06.2021, 23:04
    #40077308
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Declare и With
Кесарь
Bereteli
пишет, что необходимо объявить скалярную переменную @lvl

Очень странно. Вы в SSMS это делаете? Представленный кусок кода выглядит вполне рабочим.
Не то что выглядит, а даже выполняется!
...
Рейтинг: 0 / 0
12.06.2021, 01:04
    #40077318
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Declare и With
alexeyvg,

имо ТС не ведает, что творит.
...
Рейтинг: 0 / 0
15.06.2021, 11:47
    #40077601
Bereteli
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Declare и With
В Heide Sql пишу этот код и выдает ошибку такую.
...
Рейтинг: 0 / 0
15.06.2021, 11:55
    #40077604
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Declare и With
Bereteli,

вы уверены что данный кусок кода вы исполняете в своем IDE применительно к серверу именно MSSQL (Microsoft SQL Server) а не MySQL?

Это разные СУБД если что, но синтаксис объявления переменных у них разный.
А ваша програмулина судя по описанию умеет конектится в обе СУБД.

на всякий случай покажите вывод
Код: sql
1.
SELECT @@VERSION;
...
Рейтинг: 0 / 0
15.06.2021, 12:20
    #40077611
Bereteli
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Declare и With
felix_ff,

Да это точно SQL Server, рекурсия работает, но без деклера(
...
Рейтинг: 0 / 0
15.06.2021, 12:31
    #40077615
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Declare и With
Bereteli
Heide Sql

Задайте этот вопрос в поддержку этого продукта.
...
Рейтинг: 0 / 0
15.06.2021, 13:39
    #40077650
Adony
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Declare и With
В хейди, скорее всего стоит режим выполнения скрипта по одному стэйтменту. Поменяйте на пакетную отправку.
...
Рейтинг: 0 / 0
15.06.2021, 16:36
    #40077699
Bereteli
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Declare и With
Adony,

прочитал описание Heide, что там есть такая возможность, но так и не смог найти где это включается. Может есть возможность подсказать, буду благодарен
...
Рейтинг: 0 / 0
15.06.2021, 16:46
    #40077702
Adony
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Declare и With
вкладка Запрос-посылать пакет за один раз
...
Рейтинг: 0 / 0
16.06.2021, 08:56
    #40077829
Bereteli
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Declare и With
Adony,

Спасибо большое. В моем случаи я нашел это на кнопке пуска запроса, вдруг кому пригодится
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Declare и With / 21 сообщений из 21, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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