【问题标题】:How best to save to the database [closed]如何最好地保存到数据库[关闭]
【发布时间】:2020-08-15 09:52:56
【问题描述】:

大家,

我有一个具有唯一 ID(自动增量)、公司名称和所有者的公司数据库。

那么现在我怎样才能最好地将员工存储在数据库中,员工可以在多个公司中?这样查询就不那么复杂了?

希望你明白我的意思

【问题讨论】:

  • 您能否提供更多详细信息。您是如何实现数据库的,您的查询现在有多复杂?
  • 上面已经描述了公司的数据库。尚未创建员工数据库,因为我不知道如何做到最好,因此还没有查询。
  • 雇员 (employee_id), 公司 (company_id), company_employee(company_id,employee_id)

标签: java mysql sql database mariadb


【解决方案1】:

如果我理解您的问题,您需要 3 个表,按照惯例,表的名称是单数:

Table company (
 id int unsigned auto_increment,
 name varchar(255)
)

Table employee (
 id int unsigned auto_increment,
 name varchar(255)
)

以及链接它们的第三张表

Table employee_company (
 employee_id int unsigned,
 company_id int unsigned
)

如果你想要一个公司 x 的所有员工:

SELECT c.name AS company_name, e.name AS employee_name
    FROM company c, employee e, employee_company ec
    WHERE c.name = x
    AND c.id = ec.company_id
    AND e.id = ec.employee_id
    ORDER BY e.name

如果你想要一个员工 y 的所有公司:

    SELECT c.name AS company_name, e.name AS employee_name
    FROM company c, employee e, employee_company ec
    WHERE e.employee_name = y
    AND c.id = ec.company_id
    AND e.id = ec.employee_id
    ORDER BY c.name

如果您想知道员工是否在公司:

    SELECT ec.employee_id 
    FROM company c, employee e, employee_company ec
    WHERE e.employee_name = employee_name
    AND c.company_name = company_name
    AND c.id = ec.company_id
    AND e.id = ec.employee_id

如果没有找到返回 false 否则返回员工的 id

代替

WHERE e.employee_name = employee_name

你可以使用

WHERE e.employee_name like '%employee_name%'

【讨论】:

  • 是的,看起来真的很棒!顶 谢谢。还有一个问题,您是否知道如何进行另一个 SQL 查询,以便我可以检查该员工是否是公司的员工?所以我可以构建一个返回真/假的函数?
  • 最好说我需要查询该员工是否是 x 公司的员工?
猜你喜欢
  • 2021-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-23
  • 2017-08-04
  • 1970-01-01
  • 2016-01-13
  • 1970-01-01
相关资源
最近更新 更多