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

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

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

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

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

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

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

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

или всё-таки прийдётся через Do While делать?
Кто умеет подскажите пожалуйста.
Всем огромное спасибо!
Ну Вы, блин, наделали . Такой справочник как у Вас называется рекурсивным (ссылка parent ведет на code из того же справоника). И, соответственно, для получения необходимой Вам информации надо будет использовать рекурсию (do while, если хотите).
OFF:
Более правильно (с точки зрения построения реляционной БД) было бы разбить справочник на справочники:
- страны;
- города;
- области;
- улицы;
А вот по этим справоникам сделать запрос - вопрос пары минут работы...
...
Рейтинг: 0 / 0
SQL запрос
    #32828042
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если Фокс от 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
SQL запрос
    #32828044
malec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вопервых меньше таблиц, вовторых легко строить Treeview.
в третьих в основной таб. будет только одно поле для адреса, да и вложеность неограниченая
...
Рейтинг: 0 / 0
SQL запрос
    #32828048
Фотография FM32YO aka KID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подписываю.. ибо только что закончил пилотный этап проджекта со справочниками улиц-домов-квартир
именно так как Станислав сказал...
...
Рейтинг: 0 / 0
SQL запрос
    #32828080
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а я за мальца :) РСУБД предоставлет выбор - либа рекурсию, либа нормализуй по сущностям. Так шта какая модель - предпочтения разработчика. И их (модели) можна и нужна пользовать фсякие
...
Рейтинг: 0 / 0
SQL запрос
    #32828082
Chuveljov Andrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчёт структуры сложный вопрос.
Рекурсивный вариант позволяет обойти тот бардак с адресами (в том числе и зарубежными), когда неизвестно количество этих самых элементов.

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

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

Супер!!!

Работает!!!

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

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

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

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


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