如果我理解您的问题,您需要 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%'