我有一个场景,我必须创建一个包含以下字段的表
department_name,ministry_name,domain_name,coordinator_name,coordinator_email
现在,对于每个department_name,可以有多个coordinator_name,并且对应多个coordinator_email。
我无法在一个表(部门)中执行此操作,因为我无法在一行mysql中存储两个协调员名称及其协调员电子邮件。
所以我打算用department_name(主键),ministry_name,domain_name创建一个表(协调器) 第二个表与department_name(主键),coordinator_name,coordinator_email以及对部门的外键引用(department_name)
现在我如何使用insert语句,以便数据一次插入两个表中。类似地,我如何使用删除和更新语句...
请帮助......谢谢...
答案 0 :(得分:0)
只是不清楚你的问题。你写了那个表Coordinator将department_name作为主键。这怎么可能?在Coordinator表中你不能将department_name作为foriegn键吗?如果我误解了你的问题,我很抱歉
答案 1 :(得分:0)
部门A - 部门 - 域名 - 协调员A - 协调员电子邮件A
部门A - 部门 - 域 - 协调员B - 协调员电子邮件B
部门A - 部门 - 域 - 协调员C - 协调员电子邮件C
B部 - 部 - 域 - 协调员A - 协调员电子邮件A
如果您只是需要部门,您会忽略协调员的信息并按部门分组?除非你特别想要两张桌子?
您可以使用TRIGGERS来实现这一点,每次执行INSERT,UPDATE,DELETE时都会发生触发。
将其拆分为两个不同的表格
协调员:id,name,email,departmentId(Departments.id的外键) 部门:身份证,姓名,事工,领域
然后外键将处理更新和删除(如果删除部门,将删除所有协调员)
- 编辑
然后首先循环部门:
SELECT DISTINCT(department_name)FROM your_table
然后第二个循环是显示每个部门的所有协调员
SELECT * FROM your_table WHERE department_name =''
答案 2 :(得分:0)
首先,不要使用主键的名称,而是使用id作为键。拿你的部门,做一个id(自动增量),没有值,这样就可以做到这一点。然后生成附加到该部门名称的唯一ID,然后您可以使用此唯一ID在以后需要时调用。但是,您需要此ID才能将其他名称与此部门相关联。将部门名称保存在您创建唯一ID的一个表中,并使用另一个表,其中包含每个使用的值的id。并且您需要多个查询才能执行此操作。
部。 table:id(primary | auto inc)uid dept_name
坐标。 table:id(primary | auto inc)uid(来自dept。表)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`
)
");
?>
也许这为你解决了。
答案 3 :(得分:0)
如果您使用2个表格 表“部门” 列:id,name,ministry,domain
表“协调员” 列:id,name,email,departmentId
假设您与部门和协调员表之间存在关系。以下查询应根据部门名称
返回记录select * from Coordinator
join Department on Coordinator.departmentId = Department.Id
Where Department.name = '' --- pass any name you want in single quotes
如果这对您有用,请告诉我