powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите с запросом
8 сообщений из 8, страница 1 из 1
Помогите с запросом
    #35578219
Login12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!

Будте добры, подскажите пожалуйста с решением следующей проблемы.
Есть таблица с 2-мя полями: ID, Name.
Пример:
ID Name
1 Россия, Какая-то область, Такой-то район, село такое-то, ул. Такая-та, д. 1, кв. 1

Нужно сделать таблицу, но уже с 8-мью полями, Name разбить на 7 полей:
ID Count Obl Rayon Derevnya Ulic Dom Kv
1 Россия Какая-то область Такой-то район село такое-то ул. Такая-та д. 1 кв. 1

Т.е. изначально в Name всё забито через запятые, слова между запятыми разного размера...

Кто может помочь с SQL-запросом для реализации данной задачи?

Заранее всем отозвавшимся спасибо!!!
...
Рейтинг: 0 / 0
Помогите с запросом
    #35578270
вот что-то похожее
авторhttp://www.sql.ru/forum/actualthread.aspx?tid=595438&hl=left+join

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

ну оч.ломает рисовать и жать клавиши
...
Рейтинг: 0 / 0
Помогите с запросом
    #35578275
Login12345Доброго времени суток!

Будте добры, подскажите пожалуйста с решением следующей проблемы.
Есть таблица с 2-мя полями: ID, Name.
Пример:
ID Name
1 Россия, Какая-то область, Такой-то район, село такое-то, ул. Такая-та, д. 1, кв. 1

Нужно сделать таблицу, но уже с 8-мью полями, Name разбить на 7 полей:
ID Count Obl Rayon Derevnya Ulic Dom Kv
1 Россия Какая-то область Такой-то район село такое-то ул. Такая-та д. 1 кв. 1

Т.е. изначально в Name всё забито через запятые, слова между запятыми разного размера...

Кто может помочь с SQL-запросом для реализации данной задачи?

Заранее всем отозвавшимся спасибо!!!
А зачем именно SQL-запрос? Нельзя что-ли написать простенькую программку, которая считывает данные из записи источника, парсит поле, вставляет в приемник.
Не, ну можно, конечно, написать запрос... Только отлаживать его будет крайне неудобно из-за вложенности некоторых функций.... запрос будет примерно такой (многоточие символизирует остаток SQL-выражения, который лениво писать :-)):
Код: plaintext
1.
2.
3.
4.
5.
insert into table2 (id,count,obl,rayon,derevnya,ulic,dom,kv) ;
select t.id, substr(t.name, 1 ,atc(",",t.name, 1 )- 1 ) as count,;
substr(t.name,atc(",",t.name, 1 )+ 1 ,(atc(",",t.name, 2 )-atc(",",t.name, 1 ))) as obl,;
...
from table1
Использовать здесь переменные нельзя, так как внутри SELECT'а переменные не поддерживаются... :-(
Поэтому придется писать эти страшные выражения...
...
Рейтинг: 0 / 0
Помогите с запросом
    #35578276
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Login12345
> Т.е. изначально в Name всё забито через запятые, слова между запятыми разного
> размера...
>
> Кто может помочь с SQL-запросом для реализации данной задачи?

GETWORDNUM( ) и GETWORDCOUNT( ) разделять и властвовать ;)

--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Помогите с запросом
    #35578286
12345зайчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
create cursor tt ( name v( 100 ))
insert into tt values("Страна, область,улица, дом, квартира")

select   GETWORDNUM(name, 1 ) as f1 ;
	   , GETWORDNUM(name, 2 ) as f2 ;
	   , GETWORDNUM(name, 3 ) as f3 ;
	   , GETWORDNUM(name, 4 ) as f4 ;
	   , GETWORDNUM(name, 5 ) as f5 ;
	from tt
		
...
Рейтинг: 0 / 0
Помогите с запросом
    #35578331
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12345зайчик
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
create cursor tt ( name v( 100 ))
insert into tt values("Страна, область,улица, дом, квартира")

select   GETWORDNUM(name, 1 ) as f1 ;
	   , GETWORDNUM(name, 2 ) as f2 ;
	   , GETWORDNUM(name, 3 ) as f3 ;
	   , GETWORDNUM(name, 4 ) as f4 ;
	   , GETWORDNUM(name, 5 ) as f5 ;
	from tt

Немного подправлю

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select   ;
	   CAST(GETWORDNUM(name, 1 ) as V( 100 )) as f1 ;
	   ,CAST(GETWORDNUM(name, 2 ) as V( 100 )) as f2 ;
	   ,CAST(GETWORDNUM(name, 3 ) as V( 100 )) as f3 ;
	   ,CAST(GETWORDNUM(name, 4 ) as V( 100 )) as f4 ;
	   ,CAST(GETWORDNUM(name, 5 ) as V( 100 )) as f5 ;
from tt

Явное преобразование типа через CAST() необходимо потому, что в противном случае, размерность полей будет определена по первой записи выборке. Т.е. если в первой записи GetWordNum() вернет 1 символ, то и размерность поля будет C(1).
...
Рейтинг: 0 / 0
Помогите с запросом
    #35579188
BMJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BMJ
Гость
Вроде шутки,
1 экспортировать в csv(txt) файл
2 создать курсор с нужными полями,
3 сделать в него append from file csv del
4. играть с запросами (индексация, группировка и т.д. и т.п)
...
Рейтинг: 0 / 0
Помогите с запросом
    #35579355
Login12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за помощь, очень благодарен!!!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите с запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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