У меня есть задача, которая обрабатывает сложный JOIN-запрос.сложный mysql-запрос join in в таблицах
Tabel 1: object_category (Дерево, как структура, чтобы иметь родительскую категорию в иерархии категорий ребенка)
---------------------- category_id parent_id ---------------------- 1 null 2 null 3 1 4 1 5 2 6 2 ----------------------
Примечание категории 3 ребенок 1, 5 является ребенок 2, и т.д ....
Таблица 2: object_category_map (таблица для отображения object_id с category_id из таблицы object_category)
---------------------- object_id category_id ---------------------- 23 1 23 4 23 6 24 2 24 5 ----------------------
Задача состоит в том, чтобы найти объект_ид, который не имеет parent_id для map_id.
Пример1: object_id: 24, category_id: 2, 5 в таблице 2, object_id 24 имеет category_id 5 связаны, а также parent_id 5 это 2,
Пример 2: object_id: 23 , category_id: 1, 4, 6 object_id 23 промах parent_id (2) для category_id 6.
Задача состоит в нахождении 23, что является список object_id (ы) образуют table2, которые являются ситуация, как 23.
любезно поможет в решении этого вопроса. Благодарю.
Во-первых, то, что вы пытаетесь достичь, это понятие иерархии узел, здесь вы можете использовать JOIN и на фиксированном уровне, скажем, уровень материнской компании до 2, так что вы можете сделать до 3 присоединяется, но что, если иерархия родительского возраста продолжает расти? Поэтому для этого вам придется пройти иерархию узлов до тех пор, пока вы не получите parent_id как NULL. Для этого вам требуются усилия по программированию + попытки SQL-запросов и использование рекурсивной функции, пока вы не получите parent_id как NULL. Какой язык вы используете, поэтому я могу указать правильный пример – rsakhale
Я использую PHP с Mysql –