| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Составление SQL-запросов > выбор населенного пункта со всеми предками |
| Автор: gulitskiy 25.9.2012, 14:18 | ||||
Есть база, в ней хранятся область, район, населенный пункт.
как составить запрос чтобы в итоге выводилось все нас пункты в таком виде область район поселок область город нулл и тд |
| Автор: Akina 25.9.2012, 14:26 |
| Курите маны по "nested set" |
| Автор: gulitskiy 25.9.2012, 14:35 | ||
спасибо про нестед сет я знаю возможно ли это с ним? допустим есть город Станция и деревня Станция у города есть только один предок область а у деревни 2 район и область я делаю запрос селект where name like "Стан%" и мне надо что он выдал 3 столбика область район поселок станция область город станция естественно можно в обратном порядке ну или уже готовую строку кокатом |
| Автор: tzirechnoy 25.9.2012, 18:54 |
| Я думаю, через LEFT OUTER JOIN лучшэ всего обойтись. |
| Автор: gulitskiy 26.9.2012, 07:33 | ||||||
за оутер спасибо теперь вот что получается строю запрос
он выдает Акмолинская область, Астана строю другой запрос
и он выдает Акмолинская область, Ерейментауский район, Новодолинка Акмолинская область, Ерейментауский район, Новомарковка Ерейментауский район, Новодолинка Ерейментауский район, Новомарковка то есть данные дублируются |
| Автор: Akina 26.9.2012, 07:42 |
Судя по синтаксису, это MySQL. В нём LEFT JOIN и LEFT OUTER JOIN - полные синонимы. У Вас структура кривая - нет возможности определить, является ли запись областью, районом, нас. пунктом или иным объектом. Введите, что ли, проверку, что элемент в копии таблицы p1 является в свойм дереве корневым (потребуется четвёртая копия таблицы в запросе). |
| Автор: gulitskiy 26.9.2012, 07:56 |
понятно, а как можно сделать не кривую структупу как понимаю, енум типа область, район, нас пункт? |
| Автор: Akina 26.9.2012, 08:15 |
| Как вариант... |