我正在开发一个项目,该项目使用 MariaDB v5.5 数据库来跟踪基于树的更高层次中的员工。这棵树中的每个人都可以有各种与之相关的“标志”。在这种情况下,这些标志使用位掩码存储。
我的对象如下所示
员工表说明 +--------------+-------------+-------- ------------------+ | 姓名 | 领域 | 说明 | +--------------+-------------+-------- ------------------+ | 员工编号 | 情报 | 唯一键 | | 姓名 | VARCHAR(45) | 员工姓名 | | 旗帜 | 整数(4) | 员工属性的位掩码 | | parent_id | 情报 | 父记录的employee_id | +--------------+-------------+-------- ------------------+ “标志”位图描述 +-----+--------------+ | 位 | 旗帜 | +-----+--------------+ | 0 | 首席执行官 | | 1 | 经理 | | 2 | 项目领导 | | 3 | 销售人员 | | 4 | 维护 | +-----+--------------+ 员工表数据 +----+--------+------------+---------- -----+ | 编号 | 姓名 | parent_id | 旗帜 | +----+--------+------------+---------- -----+ | 1 | 丽莎 | 空 | 首席执行官 | | 2 | 史蒂夫 | 1 | 经理 | | 3 | 帕特 | 1 | 经理 | | 4 | 玛丽 | 2 | 销售人员,项目负责人 | | 5 | 菲尔 | 4 | 销售人员,维护 | | 6 | 吉姆 | 3 | 销售人员,维护 | | 7 | 安娜 | 3 | 销售人员,维护 | +----+--------+------------+---------- -----+
假设我想查询所有具有“MAINTANCE”标志的员工,但我需要返回具有“MANAGER”标志的父记录的 id。所以我的结果应该是这样的。
> 从...中选择 id、名称、manager_id、manager_name +----+--------+------------+--------------+ | 身份证 | 姓名 | manager_id | 经理姓名 | +----+--------+------------+--------------+ | 5 | 菲尔 | 2 | 史蒂夫 | | 6 | 吉姆 | 3 | 帕特 | | 7 | 安娜 | 3 | 帕特 | +----+--------+------------+--------------+
那么如何构建我的查询来给我想要的东西呢?
请注意,这棵树的深度可能不止 3 层,而且查询仍然需要工作。