|
Помогите понять CTE
|
|||
---|---|---|---|
#18+
Не могу понять здесь рекурсия получается что ли? Просто в моем понимании как происходит: в первом селекте 1-й день месяца и название дня объединяется со вторым днем и назанием дня. А вот дальше что происходит? Зы: А где здесь форум по sql просто WITH CTE AS ( SELECT DATEADD(D,-DATEPART(D,GETDATE())+1,GETDATE())[FIRST SUNDAY DATE],DATENAME(DW,DATEADD(D,-DATEPART(D,GETDATE())+1,GETDATE()))[DAY NAME] UNION ALL SELECT DATEADD(D,1,[FIRST SUNDAY DATE]),DATENAME(DW,DATEADD(D,1,[FIRST SUNDAY DATE]))FROM CTE ) SELECT [DAY NAME] FROM CTE ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 16:27 |
|
Помогите понять CTE
|
|||
---|---|---|---|
#18+
boobonickЗы: А где здесь форум по sql просто А простоSQL это СУБД новая? CTE рекурсивный. Возвращает вам список дат с названиями дней недели, начиная с первого числа текущего месяца. Сваливается по max recursion) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 16:31 |
|
Помогите понять CTE
|
|||
---|---|---|---|
#18+
* А где здесь форум по sql просто есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 16:31 |
|
Помогите понять CTE
|
|||
---|---|---|---|
#18+
авторНе могу понять здесь рекурсия получается что ли? Да, ибо CTE использует само себя же. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 16:32 |
|
Помогите понять CTE
|
|||
---|---|---|---|
#18+
boobonick* А где здесь форум по sql просто есть? Это тот sql, который "просто СУБД" используют? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 16:33 |
|
Помогите понять CTE
|
|||
---|---|---|---|
#18+
boobonick* А где здесь форум по sql просто есть? форума "просто sql" здесь нету http://ru.wikipedia.org/wiki/SQL ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 16:57 |
|
Помогите понять CTE
|
|||
---|---|---|---|
#18+
Отступления от стандартов Несмотря на наличие международного стандарта ANSI SQL-92, многие компании, занимающиеся разработкой СУБД (например, Oracle, Sybase, Microsoft, MySQL AB), вносят изменения в язык SQL, применяемый в разрабатываемой СУБД, тем самым отступая от стандарта. Таким образом, появляются специфичные для каждой конкретной СУБД диалекты языка SQL. (C) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 17:13 |
|
Помогите понять CTE
|
|||
---|---|---|---|
#18+
StarikNavyОтступления от стандартов Несмотря на наличие международного стандарта ANSI SQL-92 , многие компании, занимающиеся разработкой СУБД (например, Oracle, Sybase, Microsoft, MySQL AB), вносят изменения в язык SQL, применяемый в разрабатываемой СУБД, тем самым отступая от стандарта. Таким образом, появляются специфичные для каждой конкретной СУБД диалекты языка SQL. (C)CTE, однако, появился в ANSI SQL-99 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 17:18 |
|
Помогите понять CTE
|
|||
---|---|---|---|
#18+
Ааааа, мой мозг разрывается просто=) Спасибо за ответы ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 18:20 |
|
Помогите понять CTE
|
|||
---|---|---|---|
#18+
рекурсия в данном запросе бесконечная - надо как-нибудь ограничить или так Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
или так Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
или еще как нибудь ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2013, 07:05 |
|
Помогите понять CTE
|
|||
---|---|---|---|
#18+
LexusRили еще как нибудь Угу. MAXRECURSION hint. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2013, 08:53 |
|
Помогите понять CTE
|
|||
---|---|---|---|
#18+
pkarklinLexusRили еще как нибудь Угу. MAXRECURSION hint. Этот хинт не предназначен для ограничения бесконечной рекурсии. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2013, 08:56 |
|
Помогите понять CTE
|
|||
---|---|---|---|
#18+
Гость333Этот хинт не предназначен для ограничения бесконечной рекурсии. Всмылсе?! Код: sql 1. 2. 3. 4. 5. 6. 7.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2013, 09:01 |
|
Помогите понять CTE
|
|||
---|---|---|---|
#18+
Гость333pkarklinпропущено... Угу. MAXRECURSION hint. Этот хинт не предназначен для ограничения бесконечной рекурсии. То есть, конечно, сам по себе не предназначен. Без него не обойтись. Способ ограничения рекурсии до заданного уровня видится таким: Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2013, 09:03 |
|
Помогите понять CTE
|
|||
---|---|---|---|
#18+
pkarklinГость333Этот хинт не предназначен для ограничения бесконечной рекурсии. Всмылсе?! Код: sql 1.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Я имел в виду, что использование хинта самого по себе приводит к ошибке 530, а это плохо, если, скажем, код обёрнут в try-catch :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2013, 09:07 |
|
Помогите понять CTE
|
|||
---|---|---|---|
#18+
А не подскажете, возможно ли как-то cte применить, чтобы получить количество понедельников, вторников, сред... воскресений месяца при заданной дате. Т.е.: data mon tue .... sun 1.02.2012 4 5 3 6.07.2011 3 4 5 Вот в таком ключе ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2013, 13:06 |
|
Помогите понять CTE
|
|||
---|---|---|---|
#18+
Maxx, а действительно... я было начал задумываться о мат.аппарате... А все проще - развернуть месяц по дням, для каждого дня вычислить номер дня недели, свернуть в count по дням недели - и никакой математики... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2013, 13:40 |
|
Помогите понять CTE
|
|||
---|---|---|---|
#18+
ДА, такие же мысли, только не номер дня недели, а сразу название, потом соответсвенно выборку по дню и подсчет. Но я не понимаю вот есть столбец понедельник, вторник..воскресение - как его вывести? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2013, 13:46 |
|
Помогите понять CTE
|
|||
---|---|---|---|
#18+
boobonickdata mon tue .... sun 1.02.2012 4 5 3 6.07.2011 3 4 5 простите конечно,но как 1.02.2012 может содержать 4 понедельника,5 вторников и еще 3 воскресения ? Развернуть просто PIVOT (гаратированные 7 колонок, если у вас не собственный календарь ) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2013, 13:50 |
|
Помогите понять CTE
|
|||
---|---|---|---|
#18+
Maxx, месяц, в котором есть дата 1.02.2012 - может :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2013, 14:11 |
|
|
start [/forum/topic.php?fid=46&msg=38328128&tid=1705966]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
152ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 265ms |
0 / 0 |