Есть таблица номер раз: - category_table category_id | category_name | category_parent 54551 | собака | PARENT 55463 | котяра | PARENT 22156 | черный | 54551 55461 | белый | 54551 11245 | ленивый | 55463 69844 | надиванележака | 22156 97774 | многоводывыпивака | 22156 Есть таблица номер два: - product_table product_id | product_name | product_parent 16012 | Барбос | 69844 25441 | Шарик | 97774 Вопрос: Как на одной странице вытащить данные вот в таком виде: черный: Барбос Шарик с минимальным количеством запросов к базе. рассматриваются предложения по изменению структуры таблиц.
ответ: Код (Text): SELECT product_name FROM product_table Добавлено спустя 3 минуты 11 секунд: как корабль назовешь, так он и поплывет. предлагаю для начала переименовать сущности. из названия таблиц выкинуть слово table, а поле product_parent переименовать в category_id. насколько я понял данную структуру, это будет отражать суть вещей. а то сейчас в именах ад кромешный Добавлено спустя 8 минут 8 секунд: надеюсь ты уловил сарказм. чтобы получить правильный ответ надо правильно задать вопрос. если ты хотел вычислить всех черных собак из БОЛЬШОЙ таблицы животных, то такой тип огранизации дерева не очень подходит. это называется adjacency list, а быстрые выборки любой вложенности обеспечиваются техникой nested sets либо natural path. гугли и тебе возгуглится! p.s. в принципе для частных случаев, когда категорий гарантированно немного, либо уровень вложенности категорий гарантированно не превышает малое число, есть способы и с такой структурой выкрутиться. p.p.s. а как ты предполагаешь описывать черных котов? несколько категорий "черный" заведешь?
Точный ответ на твой вопрос: Код (Text): SELECT category_name FROM category_table WHERE category_id = '22156' Можно и так Код (Text): SELECT category_name FROM category_table WHERE category_parent = '54551' Выведет: черный а как вывести Барбоса и Шарика уже написали Код (Text): SELECT product_name FROM product_table