0

我有一个场景,我必须创建一个包含以下字段的表

部门名称、部门名称、域名、协调员名称、协调员电子邮件

现在,对于每个部门名称,可以有多个 coordinator_name,并且与其对应的 coordinator_email 也不止一个。

我不能在一个表(部门)中执行此操作,因为我无法将两个协调员姓名及其协调员电子邮件存储在 mysql 的单行中。

所以我计划用部门名称(主键),部门名称,域名和部门名称(主键),协调器名称,协调器电子邮件创建一个表(协调器),外键引用部门(部门名称)

现在我如何使用插入语句,以便将数据一次插入两个表中。同样,我如何使用删除和更新语句...

请帮忙...谢谢...

4

4 回答 4

0

只是不清楚你的问题。您写了该表 Coordinator 将以 department_name 作为主键。这怎么可能?您不应该将部门名称作为协调器表中的外键吗?如果我误解了你的问题,我很抱歉

于 2012-12-14T09:13:57.957 回答
0
  1. 你可以用一张桌子

部门 A - 事工 - 领域 - 协调员 A - 协调员电子邮件 A

部门 A - 事工 - 领域 - 协调员 B - 协调员电子邮件 B

部门 A - 事工 - 领域 - 协调员 C - 协调员电子邮件 C

部门 B - 事工 - 领域 - 协调员 A - 协调员电子邮件 A

如果您只需要部门,您会忽略协调员的信息并按部门分组?除非你特别想要两张桌子?

  1. 您可以使用 TRIGGERS 来实现,每次执行 INSERT、UPDATE、DELETE 时都会发生触发器。

  2. 将其拆分为两个不同的表

Coordinator:id、name、email、departmentId(Departments.id 的外键) 部门:id、名称、部门、域

然后外键将负责更新和删除(如果部门被删除,将删除所有协调员)

- 编辑

然后首先遍历部门:

从 your_table 中选择 DISTINCT(department_name)

如果然后第二个循环是显示每个部门的所有协调员

SELECT * FROM your_table WHERE department_name = ''

于 2012-12-14T09:19:21.913 回答
0

首先,不要使用名称作为主键,而是使用 id 作为键。以您的部门为例,创建一个 id(自动递增)并且没有值,以便它自己执行此操作。然后生成一个附加到该部门名称的唯一 ID,如果需要,您可以使用此唯一 ID 稍后调用。但是,您需要此 ID 才能将其他名称与该部门相关联。将部门名称保存在您创建唯一 ID 的一个表中,并在另一个表中包含这些名称以及每个使用的值的此 ID。你需要不止一个查询来做到这一点。


部门 表:id(primary|auto inc) uid dept_name

协调。table: id(primary|auto inc) uid(from dept. table) min_name coord_name coord_email

<?php
    mysql_query("
        insert into `dept` values(
            NULL,
            `$uid`,
            `$dept_name`
        )
    ");
    mysql_query("
        insert into `coord` values (
            NULL,
            `$uid`,
            `$coord_name`,
            `$coord_email`,
            `$ministry_name`
        )
    ");
?>

也许这为你解决了。

于 2012-12-14T09:35:58.813 回答
0

如果您使用 2 个表表“部门”列:id、名称、部门、域

表“协调员”列:id、name、email、departmentId

假设您在 Department 和 Coordinator 表之间有关系。下面的查询应该根据部门名称返回记录

select * from Coordinator 
     join Department on Coordinator.departmentId = Department.Id
Where Department.name = '' --- pass any name you want in single quotes

让我知道这是否适合您

于 2012-12-14T11:51:00.133 回答