Как объединить филиалы в единую сеть в каталоге фирм?

Тема в разделе "Мегафлуд", создана пользователем danneo, 20 янв 2015.

  1. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.463
    Симпатии:
    114
    Есть каталог фирм. У фирм есть филиалы. Нужно, чтобы у филиала выводился список других филиалов и основного офиса. Также формировать страницу со списком всех филиалов и главного офиса. Каждый филиал, получается, как отдельный объект данных (фирма каталога).
    Не могу понять, как придумать структуру БД, какие поля, чтобы это дело устроить.
    Все что пришло в голову, это создать отдельную таблицу в которую заносить связи, типа: id (ключ), name_link (название сети), id_all (id всех фирм сети, через запятую).
    Только вот выводить можно будет на отдельной странице, это легко, а чтобы у филиала выводить другие филиалы с такой таблицей как-то неудобно получается. Да и не понятно, как из связывать между собой пользователю (процесс)...
    Может кто-нибудь подскажет?
     
  2. Denixxx

    Denixxx

    Регистр.:
    7 фев 2014
    Сообщения:
    247
    Симпатии:
    196
    Для такого типа в таблице обычно используется структура:
    id — сам объект, AUTO_INCREMENT
    parent (или pid) — родитель для id
    Таким образом, можно сделать бесконечное дерево вложенности филиалов друг в друга.
    Только нужно контролировать, чтобы в одной записи id не был равен pid, а то возникнет рекурсия.
    Главные филиалы имеют pid==0.
     
  3. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.463
    Симпатии:
    114
    мысль хорошая, но что делать, если у филиалов нет главного офиса, а объединить в сеть нужно?
     
  4. Denixxx

    Denixxx

    Регистр.:
    7 фев 2014
    Сообщения:
    247
    Симпатии:
    196
    Ну так объедините офисы названием фирмы. Мне кажется Вы уже проблемы из пальца высасываете.
     
  5. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.463
    Симпатии:
    114
    не вариант... есть фирмы с одинаковым названием, даже в одном городе.
     
  6. Denixxx

    Denixxx

    Регистр.:
    7 фев 2014
    Сообщения:
    247
    Симпатии:
    196
    Фирм с абсолютно одинаковым названием не бывает даже внутри страны — это противоречит правилам регистрации коммерческих фирм.
    [​IMG]
     
  7. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.463
    Симпатии:
    114
    вы где живете, на луне? У меня их несколько было... скажите тогда, кто это проверяет, чтобы их не было?
     
  8. Denixxx

    Denixxx

    Регистр.:
    7 фев 2014
    Сообщения:
    247
    Симпатии:
    196
    Если на сайте — то модератор или скрипт, как сделаете.
    А в жизни фирму проверяют на уникальность названия при регистрации, например в России это делает Федеральная налоговая служба.
    http://www.kakprosto.ru/kak-33019-kak-proverit-nazvanie-firmy-na-unikalnost
     
  9. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.463
    Симпатии:
    114
    вы понимаете о чем сами пишите? причем тут уникальность и возможность регистрации с одинаковым названием? Не кажется, что это разное? Я могу хоть 10 фирм с одинаковым названием зарегистрировать в ФНС, даже в одном городе и по одному адресу.
    В общем, чего убеждать... у меня есть задача (описанная в 1-м посте), нужно ее и решить, а не муслякать законодательство товарные знаки.
     
  10. svfolder

    svfolder Постоялец

    Регистр.:
    31 июл 2013
    Сообщения:
    96
    Симпатии:
    39
    Вот как я в своем проекте сделал.

    upload_2015-2-3_23-58-33.png

    upload_2015-2-3_23-59-58.png

    Код:
    SELECT
        jos_md_company_fil.id,
        jos_md_company_fil.company_id,
        jos_md_company_fil.region_id,
        jos_md_company_fil.city_id,
        jos_md_company_fil.subway_id,
        jos_md_company_fil.phone,
        jos_md_company_fil.phone_two,
        jos_md_company_fil.phone_three,
        jos_md_company_fil.filtitle,
        jos_md_company_fil.number,
        jos_md_company_fil.street,
        jos_md_company_fil.skype,
        jos_md_company_fil.fio,
        jos_md_company_fil.published,
        jos_md_company_fil.timecall_from,
        jos_md_company_fil.timecall_to,
        jos_md_company_fil.timecall_from_two,
        jos_md_company_fil.timecall_to_two,
        jos_md_company_fil.timecall_from_three,
        jos_md_company_fil.timecall_to_three,
        jos_md_region.`name` AS region_name,
        jos_md_city.`name` AS city_name
    FROM
        jos_md_company_fil
    LEFT JOIN jos_md_region ON jos_md_company_fil.region_id = jos_md_region.id
    LEFT JOIN jos_md_city ON jos_md_company_fil.city_id = jos_md_city.id
    WHERE
        jos_md_company_fil.company_id = 1