Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Аналог scan for в ms_sql. Люди хелп срочно !!! / 21 сообщений из 21, страница 1 из 1
06.02.2008, 10:13
    #35112679
gotko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог scan for в ms_sql. Люди хелп срочно !!!
mssql2000+vfp8.0
нет времени самому искать запара по работе...
поскажите короткий пример реализации scan for в синтаксисе mssql

надо пробежать по таблице и сделать сумму выбранных по условию строковых переменных
в одну переменную...
в общем нужен аналог такого кода фокса

a=''
select my_table
scan for (условие)
a=a+my_table.pole+chr(10)
endscan
?a
...
Рейтинг: 0 / 0
06.02.2008, 10:16
    #35112699
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог scan for в ms_sql. Люди хелп срочно !!!
> Автор: gotko
> mssql2000+vfp8.0

А выдрать все в фокс и там сканом?


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
06.02.2008, 10:24
    #35112730
gotko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог scan for в ms_sql. Люди хелп срочно !!!
пока так и делаю но хочется эту функцию в sql -
в фоксе тормозит жутко...
у меня скан по большой таблице и туда суются
выдранные скомпонованные строки по функции...
хочется все повесить на сервер...
...
Рейтинг: 0 / 0
06.02.2008, 10:30
    #35112751
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог scan for в ms_sql. Люди хелп срочно !!!
Не надо фоксовые технологии тупо переносить в SQL сервер, разные это системы с разной идеологией.
Сумма по строковому полю там получается примерно таким способом:
Код: plaintext
1.
2.
DECLARE @Result varchar( 8000 )
SELECT @Result = COALESCE(@Result + ',', '') + my_table.pole+char( 10 ) FROM my_table
SELECT @Result 	
...
Рейтинг: 0 / 0
06.02.2008, 10:32
    #35112758
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог scan for в ms_sql. Люди хелп срочно !!!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
USE pubs
GO
WHILE (SELECT AVG(price) FROM titles) < $ 30 
BEGIN
   UPDATE titles
      SET price = price *  2 
   SELECT MAX(price) FROM titles
   IF (SELECT MAX(price) FROM titles) > $ 50 
      BREAK
   ELSE
      CONTINUE
END
PRINT 'Too much for the market to bear'

а может не стоит?
может все-же написать нормальные запросы?

нарисуйте прибл-но
(абстрактно стр-ру таблиц и что хочется сделать)
поможем нарисовать ХП
...
Рейтинг: 0 / 0
06.02.2008, 10:38
    #35112787
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог scan for в ms_sql. Люди хелп срочно !!!
gotkomssql2000+vfp8.0
нет времени самому искать запара по работе...
поскажите короткий пример реализации scan for в синтаксисе mssql

надо пробежать по таблице и сделать сумму выбранных по условию строковых переменных
в одну переменную...
в общем нужен аналог такого кода фокса

a=''
select my_table
scan for (условие)
a=a+my_table.pole+chr(10)
endscan
?a
Зачем SCAN!

Используй курсоры:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
DECLARE @ITOG VARCHAR( 8000 ),
@POLE VARCHAR( 40 )
SET @ITOG = ''
DECLARE MyCur CURSOR FORWARD_ONLY LOCAL STATIC FOR 
SELECT pole FROM my_table WHERE Условие
OPEN MyCur
FETCH NEXT FROM MyCur INTO @POLE
WHILE @@FETCH_STATUS =  0 
BEGIN
     SET @ITOG = @ITOG + @POLE + CHAR( 10 )
     FETCH NEXT FROM MyCur INTO @POLE
END
CLOSE MyCur
DEALLOCATE MyCur
С уважением, Алексей
P.S. На SQL 2005 я такие агрегаты делаю через CLR на C#
Тогда можно всю строку собрать одним SELECT
...
Рейтинг: 0 / 0
06.02.2008, 10:42
    #35112805
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог scan for в ms_sql. Люди хелп срочно !!!
Хотя вариант Sergey Sizov мне нравится больше, чем мой с курсорами, но я бы добавил бы одну команду на случай поля CHAR, а не VARCHAR:
Код: plaintext
1.
2.
DECLARE @Result varchar( 8000 )
SELECT @Result = COALESCE(@Result + ',', '') + RTRIM(pole) + char( 10 ) FROM my_table
SELECT @Result 
С уважением, Алексей
...
Рейтинг: 0 / 0
06.02.2008, 10:45
    #35112813
gotko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог scan for в ms_sql. Люди хелп срочно !!!
на сервере
t_set (c_set int, name char(50)) - старшая таблица
b_set (c_set int ,razmer char(2),kol int) -подчиненная таблица по c_set

надо udf(t_set.c_set) которая вернет строку
b_set.razmer+' - '+str(b_set.kol)+chr(10)+... и так по всем строкам в b_set,
отвечающим конкретной c_set

это надо, чтобы потом засунуть эту строку в примечание к ячейке в excel - ном отчете

примечание должно иметь вид
razmer - kol
42 - 2
43 - 2
44 - 1
и т.д. по всем b_set.c_set
на форматирование пока можно забить...
...
Рейтинг: 0 / 0
06.02.2008, 10:53
    #35112848
gotko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог scan for в ms_sql. Люди хелп срочно !!!
to Sergey Sizov.

DECLARE @Result varchar(8000)
SELECT @Result = COALESCE(@Result + ',', '') + my_table.pole+char(10) FROM my_table
SELECT @Result
может я чего не понял, но где здесь условие?
или сначала надо дернуть нужное во временную таблицу а уже по ней применять этот код ?
...
Рейтинг: 0 / 0
06.02.2008, 10:54
    #35112854
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог scan for в ms_sql. Люди хелп срочно !!!
2 gotko
Основу Вам дали, остальное Ваша работа.
...
Рейтинг: 0 / 0
06.02.2008, 10:57
    #35112864
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог scan for в ms_sql. Люди хелп срочно !!!
SELECT @Result = COALESCE(@Result + ',', '') + my_table.pole+char(10) FROM my_table
может я чего не понял, но где здесь условие?
Батенька, а может еще программу за Вас написать? Или настолько плохо знаете синтаксис команды Select и не знаете где и как в ней указывается условие отбора?
Хорошо, напомню:
Код: plaintext
SELECT @Result = COALESCE(@Result + ',', '') + my_table.pole+char( 10 ) FROM my_table where (условие)
...
Рейтинг: 0 / 0
06.02.2008, 10:57
    #35112865
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог scan for в ms_sql. Люди хелп срочно !!!
gotkoto Sergey Sizov.

DECLARE @Result varchar(8000)
SELECT @Result = COALESCE(@Result + ',', '') + my_table.pole+char(10) FROM my_table
SELECT @Result
может я чего не понял, но где здесь условие?
или сначала надо дернуть нужное во временную таблицу а уже по ней применять этот код ?
FROM my_table WHERE ... ТУТ ВАШЕ УСЛОВИЕ !
Вы же его не привели в своем пример.
А в принципе, Сергей прав. Вам дали два варианта решения. Немного стоит, наверное и самому BOL посмотреть!
С уважением, Алексей
...
Рейтинг: 0 / 0
06.02.2008, 10:59
    #35112872
gotko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог scan for в ms_sql. Люди хелп срочно !!!
всем спасибо !
дальше буду сам...
...
Рейтинг: 0 / 0
06.02.2008, 11:22
    #35112977
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог scan for в ms_sql. Люди хелп срочно !!!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
create table #t_set (c_set int, name char( 50 )) -- старшая таблица
create table #b_set (c_set int ,razmer char( 2 ),kol int) --подчиненная таблица по c_set

insert into #t_set 
	select  1 , 'сапоги'
	union
	select  2 , 'брюки'
insert into #b_set 
	select  1 , '1',  3 
	union
	select  1 , '2',  5 
	union
	select  2 , '33',  4 
	union
	select  2 , '66',  8 


declare @cStr varchar( 500 )
set @cStr=''
select @cStr=@cStr + b.razmer + '-' + ltrim(str(b.kol)) + ' ' + char( 10 )
			from #b_set b
			where b.c_set =  1 
print @cStr

set @cStr=''
select @cStr=@cStr + b.razmer + '-' + ltrim(str(b.kol)) + ' ' + char( 10 )
			from #b_set b
			where b.c_set =  2 
print @cStr
...
Рейтинг: 0 / 0
06.02.2008, 12:55
    #35113384
Аналог scan for в ms_sql. Люди хелп срочно !!!
Aleksey-K gotkomssql2000+vfp8.0
нет времени самому искать запара по работе...
поскажите короткий пример реализации scan for в синтаксисе mssql

надо пробежать по таблице и сделать сумму выбранных по условию строковых переменных
в одну переменную...
в общем нужен аналог такого кода фокса

a=''
select my_table
scan for (условие)
a=a+my_table.pole+chr(10)
endscan
?a
Зачем SCAN!

Используй курсоры:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
DECLARE @ITOG VARCHAR( 8000 ),
@POLE VARCHAR( 40 )
SET @ITOG = ''
DECLARE MyCur CURSOR FORWARD_ONLY LOCAL STATIC FOR 
SELECT pole FROM my_table WHERE Условие
OPEN MyCur
FETCH NEXT FROM MyCur INTO @POLE
WHILE @@FETCH_STATUS =  0 
BEGIN
     SET @ITOG = @ITOG + @POLE + CHAR( 10 )
     FETCH NEXT FROM MyCur INTO @POLE
END
CLOSE MyCur
DEALLOCATE MyCur
С уважением, Алексей
P.S. На SQL 2005 я такие агрегаты делаю через CLR на C#
Тогда можно всю строку собрать одним SELECT

Это легко решается без CLR курсоров и прочих извращений
Код: plaintext
SELECT [field]+',' as "data()"   FROM [dbo].[table] for xml path('')  
легко читать легко поддерживать
...
Рейтинг: 0 / 0
06.02.2008, 13:20
    #35113505
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог scan for в ms_sql. Люди хелп срочно !!!
бывший фоксист Aleksey-K gotkomssql2000+vfp8.0
нет времени самому искать запара по работе...
поскажите короткий пример реализации scan for в синтаксисе mssql

надо пробежать по таблице и сделать сумму выбранных по условию строковых переменных
в одну переменную...
в общем нужен аналог такого кода фокса

a=''
select my_table
scan for (условие)
a=a+my_table.pole+chr(10)
endscan
?a
Зачем SCAN!

Используй курсоры:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
DECLARE @ITOG VARCHAR( 8000 ),
@POLE VARCHAR( 40 )
SET @ITOG = ''
DECLARE MyCur CURSOR FORWARD_ONLY LOCAL STATIC FOR 
SELECT pole FROM my_table WHERE Условие
OPEN MyCur
FETCH NEXT FROM MyCur INTO @POLE
WHILE @@FETCH_STATUS =  0 
BEGIN
     SET @ITOG = @ITOG + @POLE + CHAR( 10 )
     FETCH NEXT FROM MyCur INTO @POLE
END
CLOSE MyCur
DEALLOCATE MyCur
С уважением, Алексей
P.S. На SQL 2005 я такие агрегаты делаю через CLR на C#
Тогда можно всю строку собрать одним SELECT

Это легко решается без CLR курсоров и прочих извращений
Код: plaintext
SELECT [field]+',' as "data()"   FROM [dbo].[table] for xml path('')  
легко читать легко поддерживать
1. Так у человека mssql2000! Какой path ?
2. CLR агрегаты я использую, конечно, не для таких сборок строки, а для дополнительное (иногда достаточно сложной) обработки во время агрегирования. А простая конкатенация с произвольным разделитеоем получается, как частный слачай. Для SQL 2000 это тоже не пойдет.
Остается вариант Sergey Sizov для простой конкатенации или курсоры для более сложной обработки.
С уважением, Алексей
...
Рейтинг: 0 / 0
06.02.2008, 14:10
    #35113725
Аналог scan for в ms_sql. Люди хелп срочно !!!
Aleksey-K
1. Так у человека mssql2000! Какой path ?
2. CLR агрегаты я использую, конечно, не для таких сборок строки, а для дополнительное (иногда достаточно сложной) обработки во время агрегирования. А простая конкатенация с произвольным разделитеоем получается, как частный слачай. Для SQL 2000 это тоже не пойдет.
Остается вариант Sergey Sizov для простой конкатенации или курсоры для более сложной обработки.
С уважением, Алексей

Просто неудачно процитировал ваше сообщение.
Речь конечно шла о 2005.
...
Рейтинг: 0 / 0
06.02.2008, 14:18
    #35113755
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог scan for в ms_sql. Люди хелп срочно !!!
бывший фоксист Aleksey-K
1. Так у человека mssql2000! Какой path ?
2. CLR агрегаты я использую, конечно, не для таких сборок строки, а для дополнительное (иногда достаточно сложной) обработки во время агрегирования. А простая конкатенация с произвольным разделитеоем получается, как частный слачай. Для SQL 2000 это тоже не пойдет.
Остается вариант Sergey Sizov для простой конкатенации или курсоры для более сложной обработки.
С уважением, Алексей

Просто неудачно процитировал ваше сообщение.
Речь конечно шла о 2005.
А Вас, уважаемый "бывший фоксист" часом не Андрей Александрович зовут ?
С уважением, Алексей
...
Рейтинг: 0 / 0
06.02.2008, 17:14
    #35114587
Аналог scan for в ms_sql. Люди хелп срочно !!!
Aleksey-K
А Вас, уважаемый "бывший фоксист" часом не Андрей Александрович зовут ?
С уважением, Алексей

А в связи с чем такой интимный вопрос?
...
Рейтинг: 0 / 0
07.02.2008, 07:46
    #35115553
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог scan for в ms_sql. Люди хелп срочно !!!
бывший фоксист Aleksey-K
А Вас, уважаемый "бывший фоксист" часом не Андрей Александрович зовут ?
С уважением, Алексей

А в связи с чем такой интимный вопрос?
Думал знакомы. Извините, обознался.
С уважением, Алексей
...
Рейтинг: 0 / 0
07.02.2008, 09:09
    #35115643
Аналог scan for в ms_sql. Люди хелп срочно !!!
Aleksey-K
Думал знакомы. Извините, обознался.
С уважением, Алексей

Знакомы, но тем не менее вы меня с кем то спутали, судя по отчеству.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Аналог scan for в ms_sql. Люди хелп срочно !!! / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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