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

danneo

Честный
Регистрация
13 Ноя 2007
Сообщения
1.527
Реакции
121
Есть каталог фирм. У фирм есть филиалы. Нужно, чтобы у филиала выводился список других филиалов и основного офиса. Также формировать страницу со списком всех филиалов и главного офиса. Каждый филиал, получается, как отдельный объект данных (фирма каталога).
Не могу понять, как придумать структуру БД, какие поля, чтобы это дело устроить.
Все что пришло в голову, это создать отдельную таблицу в которую заносить связи, типа: id (ключ), name_link (название сети), id_all (id всех фирм сети, через запятую).
Только вот выводить можно будет на отдельной странице, это легко, а чтобы у филиала выводить другие филиалы с такой таблицей как-то неудобно получается. Да и не понятно, как из связывать между собой пользователю (процесс)...
Может кто-нибудь подскажет?
 
Для такого типа в таблице обычно используется структура:
id — сам объект, AUTO_INCREMENT
parent (или pid) — родитель для id
Таким образом, можно сделать бесконечное дерево вложенности филиалов друг в друга.
Только нужно контролировать, чтобы в одной записи id не был равен pid, а то возникнет рекурсия.
Главные филиалы имеют pid==0.
 
Для такого типа в таблице обычно используется структура:
id — сам объект, AUTO_INCREMENT
parent (или pid) — родитель для id
Таким образом, можно сделать бесконечное дерево вложенности филиалов друг в друга.
Только нужно контролировать, чтобы в одной записи id не был равен pid, а то возникнет рекурсия.
Главные филиалы имеют pid==0.
мысль хорошая, но что делать, если у филиалов нет главного офиса, а объединить в сеть нужно?
 
что делать, если у филиалов нет главного офиса, а объединить в сеть нужно?
Ну так объедините офисы названием фирмы. Мне кажется Вы уже проблемы из пальца высасываете.
 
Ну так объедините офисы названием фирмы. Мне кажется Вы уже проблемы из пальца высасываете.
не вариант... есть фирмы с одинаковым названием, даже в одном городе.
 
не вариант... есть фирмы с одинаковым названием, даже в одном городе.
Фирм с абсолютно одинаковым названием не бывает даже внутри страны — это противоречит правилам регистрации коммерческих фирм.
suck.jpg
 
Фирм с абсолютно одинаковым названием не бывает даже внутри страны — это противоречит правилам регистрации коммерческих фирм.
suck.jpg
вы где живете, на луне? У меня их несколько было... скажите тогда, кто это проверяет, чтобы их не было?
 
скажите тогда, кто это проверяет, чтобы их не было?
Если на сайте — то модератор или скрипт, как сделаете.
А в жизни фирму проверяют на уникальность названия при регистрации, например в России это делает Федеральная налоговая служба.
Для просмотра ссылки Войди или Зарегистрируйся
 
Если на сайте — то модератор или скрипт, как сделаете.
А в жизни фирму проверяют на уникальность названия при регистрации, например в России это делает Федеральная налоговая служба.
Для просмотра ссылки Войди или Зарегистрируйся
вы понимаете о чем сами пишите? причем тут уникальность и возможность регистрации с одинаковым названием? Не кажется, что это разное? Я могу хоть 10 фирм с одинаковым названием зарегистрировать в ФНС, даже в одном городе и по одному адресу.
В общем, чего убеждать... у меня есть задача (описанная в 1-м посте), нужно ее и решить, а не муслякать законодательство товарные знаки.
 
Вот как я в своем проекте сделал.

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
 
Назад
Сверху