Как сделать каскадный SQL-запрос?

Есть владельцы, у них директора, у директоров предприятия а на предприятиях рабочие.
Очевидно, по таблице в БД на каждую сущность. Итого что бы узнать какому владельцу подчиняется конкретный рабочий нужно:
SELECT `рабочий`,`id` FROM `рабочие` далее в предприятиях запросить id предприятия которому приналлежит id этого рабочего, потом ещё на уровень выше запросить id директора чьё предприятие, а потом на уровень выше id владельца у котрого в подчинении id выбранного директора.

Как лучше построить такой запрос, подзапросами? Тут будет ведь 3 или 4 уровня вложенности?
  • Вопрос задан
  • 788 просмотров
Пригласить эксперта
Ответы на вопрос 3
Stalker_RED
@Stalker_RED
Вы так говорите, будто 3 или 4 уровня вложенности - это что-то плохое.
Конечно, можно переписать всё на join'ы, но не факт, что будет быстрее (нужно тестировать на реальной структуре и реальных данных).
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега MySQL
{PHP, MySql, HTML, JS, CSS} developer
Если такие запросы часто используются в приложении - это повод для денормализации таблиц, внесите идентификаторы сквозного владения в таблицы и сократите и время выборки и сложность запроса.
Ответ написан
@d-stream
Готовые решения - не подаю, но...
В чем проблема-то? Сотни тысяч строк - это для бд - не объем.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы