Автор Тема: Как реализовать группировку по стране  (Прочитано 2238 раз)

kirka

  • Newbie
  • *
  • Сообщений: 49
  • Рейтинг читателей: 4
    • Просмотр профиля
В системе, ввиде дерева расположена информация о компаниях. Группировка компании по подчиненности (Головная компания, затем ниже ее филиалы). Пример: Есть следующие компании
Головная Компания   Наличие филиалов   Месторасположение головной компании   Месторасположение филиала
Русь ООО   0   Республика Татарстан   -
МТС ООО   2   Республика Татарстан   Республика Узбекистан
Сирия
Заря ООО   0   -   -
Вот так выглядит дерево с группировкой по подчиненности
   МГТС ООО Республика Татарстан
   Русь ООО   Республика Татарстан
   МТС ООО Республика Татарстан
        Филиал №1 МТС  Республика Узбекистан
        Филиал №2 МТС Сирия
   Заря ООО (место расположение не указано)
Клиент потребовал сделать группировку (возможно, это по другому называется) по месторасположению, при чем должна быть возможность переключать группировку «По подчиненности» или «По месторасположению». Примерно представил себе как это можно сделать, получается так:
   Республика Татарстан
        Русь ООО
        МТС ООО
   Республика Узбекистан
        Филиал №1 МТС
   Сирия
        Филиал №2 МТС
   Не указано месторасположение
        Заря ООО
Но проблемы следующие:
1.   При группировке по стране, филиалы в информационном дереве отображаются отдельно от головной организации
2.   Пользователь может не указать месторасположение создаваемого объекта, поэтому такой объект скорее всего придется группировать в отдельной структуре, например «Не указано месторасположение». Пользователь может не указать месторасположение не только по глупости, но и потому, что может не знать при первоначальном создании объекта.
3.   И возможно одна из основных проблем, что данная переделка дерева потребует полной переделки дерева

Можете подсказать. Каким образом лучше сделать группировку компаний по месторасположению?


Elf

  • Hero Member
  • *****
  • Сообщений: 580
  • Рейтинг читателей: 34
    • Просмотр профиля
Re: Как реализовать группировку по стране
« Ответ #1 : 16 Октября 2015, 10:24:44 »
это SQL? Есть же форумы специализирующие на запросах.

kirka

  • Newbie
  • *
  • Сообщений: 49
  • Рейтинг читателей: 4
    • Просмотр профиля
Re: Как реализовать группировку по стране
« Ответ #2 : 16 Октября 2015, 13:31:02 »
Приветствую. Sql я пока не знаю. описание с точки зрения аналитика.
Хотелось бы узнать описание модели данных

Андрей Сенченко

  • Jr. Member
  • **
  • Сообщений: 77
  • Рейтинг читателей: 5
    • Просмотр профиля
    • Linkedin
Re: Как реализовать группировку по стране
« Ответ #3 : 16 Октября 2015, 13:42:32 »
Добрый день.

Вы явным образом привели копипаст (лучше было бы заскринить) из существующей системы. Соответственно, модель данных у Вас уже есть.
Что требуется то ?
1. Понять как это работает и модифицировать отображение не влезая в таблицы ?
2. Разработать новую систему хранения и отображения ?
3. ?

1. - очень сложно
3. - задайте свой вариант для обсуждения.
2. - в последние годы все стараются делать хранение древовидных структур так, чтобы потом их можно было без труда перепеарсить в XML.

В этом случае Вам нужны:
ID записи (уникальный, сплошная нумерация)
ID уровня записи (уровень вложенности сегмента)
ID родительского сегмента (ссылка)
остальное - по задаче, но я не вижу в ней сильных проблем - несколько полей со ссылками на классификаторы + продумать сами классификаторы.


kirka

  • Newbie
  • *
  • Сообщений: 49
  • Рейтинг читателей: 4
    • Просмотр профиля
Re: Как реализовать группировку по стране
« Ответ #4 : 16 Октября 2015, 16:32:39 »
Атрибуты родителя (компания):
ID 0000
Название: МТС
Страна: Узбекистан

Атрибуты уровня записи (страна)
ID 55555
Название страны: Узбекистан

то тогда атрибуты филиала будут такими:
ID 10000
ID уровня записи: 555555
ID родительского сегмента: 0000
Название родительской компании: МТС
Страна: Узбекистан

Так?


Получается такие атрибуты филиала:


ID - уникальный номер
ID уровня записи - уровень вложенности сегмента (ссылка)
ID родительского сегмента (ссылка)
Название филиала - *тип текст 1-100*



Примечание: Система должна предоставить возможность группировать по "Странам" (см. ниже Группировка №1), "По головной организации" (Группировка №2), "Нет группировки".
 

Группировка №2
   МГТС ООО Республика Татарстан
   Русь ООО   Республика Татарстан
   МТС ООО Республика Татарстан
        Филиал №1 МТС  Республика Узбекистан
        Филиал №2 МТС Сирия
   Заря ООО (место расположение не указано)


Группировка №1
   Республика Татарстан
        Русь ООО
        МТС ООО
   Республика Узбекистан
        Филиал №1 МТС
   Сирия
        Филиал №2 МТС
   Не указано месторасположение
        Заря ООО


leha

  • Jr. Member
  • **
  • Сообщений: 52
  • Рейтинг читателей: 6
    • Просмотр профиля
Re: Как реализовать группировку по стране
« Ответ #5 : 16 Октября 2015, 21:04:55 »
Вроде бы вы сами ответили на свой вопрос :)

Только в группировке по стране, наверное, логично чтобы 2м уровнем шла группировка по головной организации. А в группировке по головной организации возможно будет полезна группировка по стране 2м уровнем.
Или вопрос был не об этом?

kirka

  • Newbie
  • *
  • Сообщений: 49
  • Рейтинг читателей: 4
    • Просмотр профиля
Re: Как реализовать группировку по стране
« Ответ #6 : 18 Октября 2015, 17:22:40 »
Спасибо. О группировке второго уровня я не подумал. Спасибо!