Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SQL запрос / 12 сообщений из 12, страница 1 из 1
15.12.2004, 10:41
    #32827938
malec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос
Есть таб. ATE.dbf - справочник районов, городов,улиц.

fields :code(i), name(c50), parent(i)

code - код
name - название
parent - код вышестоящего (типа code Москвы а его parent - код Московской области)

Вопрос: можно ли одним запросом пройтись по єтой цепочке чтоб получить
строку типа: Росия, Московская обл., г.Москва, ул. Койкого

или всё-таки прийдётся через Do While делать?
Кто умеет подскажите пожалуйста.
Всем огромное спасибо!
...
Рейтинг: 0 / 0
15.12.2004, 11:13
    #32828007
Станислав C.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос
malecЕсть таб. ATE.dbf - справочник районов, городов,улиц.

fields :code(i), name(c50), parent(i)

code - код
name - название
parent - код вышестоящего (типа code Москвы а его parent - код Московской области)

Вопрос: можно ли одним запросом пройтись по єтой цепочке чтоб получить
строку типа: Росия, Московская обл., г.Москва, ул. Койкого

или всё-таки прийдётся через Do While делать?
Кто умеет подскажите пожалуйста.
Всем огромное спасибо!
Ну Вы, блин, наделали . Такой справочник как у Вас называется рекурсивным (ссылка parent ведет на code из того же справоника). И, соответственно, для получения необходимой Вам информации надо будет использовать рекурсию (do while, если хотите).
OFF:
Более правильно (с точки зрения построения реляционной БД) было бы разбить справочник на справочники:
- страны;
- города;
- области;
- улицы;
А вот по этим справоникам сделать запрос - вопрос пары минут работы...
...
Рейтинг: 0 / 0
15.12.2004, 11:28
    #32828042
Hel!Riser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос
если Фокс от 8 то примерна вота
Код: plaintext
1.
2.
3.
4.
SELECT IIF(ISNULL(upp.name),'',upp.name) + ' / ' + IIF(ISNULL(up.name),'',up.name) + ' / ' + IIF(ISNULL(u.name),'',u.name) ;
	FROM ate u ;
	LEFT OUTER JOIN ate up ON IIF(ISNULL(u.parent), 0 ,u.parent) = IIF(ISNULL(up.code), 0 ,up.code) ;
	LEFT OUTER JOIN ate upp ON IIF(ISNULL(up.parent), 0 ,up.parent) = IIF(ISNULL(upp.code), 0 ,upp.code) ;
	WHERE u.code = nCode
а ежели ниже - тогда тока с рекурсивным поднятием\опусканием по веткам
...
Рейтинг: 0 / 0
15.12.2004, 11:29
    #32828044
malec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос
Ну вопервых меньше таблиц, вовторых легко строить Treeview.
в третьих в основной таб. будет только одно поле для адреса, да и вложеность неограниченая
...
Рейтинг: 0 / 0
15.12.2004, 11:29
    #32828048
FM32YO aka KID
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос
подписываю.. ибо только что закончил пилотный этап проджекта со справочниками улиц-домов-квартир
именно так как Станислав сказал...
...
Рейтинг: 0 / 0
15.12.2004, 11:38
    #32828080
Hel!Riser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос
а я за мальца :) РСУБД предоставлет выбор - либа рекурсию, либа нормализуй по сущностям. Так шта какая модель - предпочтения разработчика. И их (модели) можна и нужна пользовать фсякие
...
Рейтинг: 0 / 0
15.12.2004, 11:38
    #32828082
Chuveljov Andrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос
Насчёт структуры сложный вопрос.
Рекурсивный вариант позволяет обойти тот бардак с адресами (в том числе и зарубежными), когда неизвестно количество этих самых элементов.

Восстанавливать надо через рекурсивную функцию.

___________________
Всё вышеизложенное есть моё частное мнение и не претендует на полноту изложения.
...
Рейтинг: 0 / 0
15.12.2004, 11:41
    #32828092
malec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос
2 Hel!Riser

Супер!!!

Работает!!!

Огромное спасибо!!!
...
Рейтинг: 0 / 0
15.12.2004, 11:50
    #32828121
malec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос
Одно но !
Показывает только три вложености.
Район, город, улица.
А больше можно?
...
Рейтинг: 0 / 0
15.12.2004, 12:02
    #32828148
AleksMed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос
Разобрав внимательно запрос от Hel!Risera ты все поймешь и нарастишь вложенность. Удачи :)
...
Рейтинг: 0 / 0
15.12.2004, 12:07
    #32828161
malec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос
Спасибо и на этом.

И то хлеб!
...
Рейтинг: 0 / 0
18.12.2004, 23:54
    #32833579
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос
Hi malec!

ЛУЧШЕ всё-же через DO WHILE - это как раз и позволит раскрывать
неограниченные по вложенности структуры - где-то 3 уровня, где-то 6
:)
А насчёт структуры - не слушай недоброжелателей - нормальная у тебя
структура :)

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SQL запрос / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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