gpt4 book ai didi

mysql - 数据库架构和拉取信息

转载 作者:行者123 更新时间:2023-11-29 05:42:56 25 4
gpt4 key购买 nike

我远不是数据库专家,所以请随时让我知道我做的完全错了。我正在尝试创建一组具有以下基本规则的表:

有公司、经理和员工。经理只能属于一个公司,但员工可以属于多个经理。我想出的表结构是这样的:

# Companies
company_id
company_name

# Managers
manager_id
company_id

# Employees
employee_id
company_id
employee_name

# Managed By
employee_id
manager_id

这个结构看起来合理吗?我想我需要类似“Managed By”的东西,因为一个员工可以有多个经理。

现在让我感到困惑的是我如何设法获取我想要的记录。例如:

    <罢工>
  • 获取属于某个经理的所有员工姓名
  • 获取属于两个特定经理的所有员工姓名
  • 同一家公司的所有员工

编辑:我想我已经弄清楚了查询,但这仍然感觉很笨拙,所以对表格结构的任何帮助将不胜感激。

事实上,我在为这些信息编写查询时遇到了问题,这让我觉得我在表结构上做了一些根本性的错误。希望这里有人可以纠正我的错误?

最佳答案

总的来说,方案是正确的。然而,确实存在的一种可能性是,您可能拥有一名员工由两家以上公司的经理管理的数据。

对于您的查询:

select distinct Employees.employee_name as name from Employees, Managers, ManagedBy where Managers.manager_id = X and ManagedBy.manager_id = Managers.manager_id and Employees.employee_id = ManagedBy.employee_id;

select distinct Employees.employee_name as name from Employees, Managers, ManagedBy where (Managers.manager_id = X or Managers.manager_id = Y) and ManagedBy.manager_id = Managers.manager_id and Employees.employee_id = ManagedBy.employee_id;

其中 X 和 Y 是您想要的经理 ID。

编辑:我知道你划掉了你想要的查询,但第三个是这样的:

select distinct Employees.employee_name as name from Employees where Employees.company_id = Z;

其中 Z 是您想要的公司 ID。

关于mysql - 数据库架构和拉取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5138056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com