我有两个已连接的表,但关系是ManyToOne但我想将其更改为ManyToMany,因为它更适合它,但在创建新的ManyToMany表时。
表
CostCenter
IdCostCenter CostCenterNumber CostCenterName
1 1 Name 1
2 2 Name 2
TravelCostCenterLine
IdCostCenterLine IdTravelComponent SplitLine Percentage IdCostCenter
1 1 0 25 1
2 1 0 25 2
3 1 1 30 1
4 1 1 20 2
5 2 0 100 1
所以我想将它改为多个,一个TravelCostCenterLine有多个CostCenter,同一个CostCenter可以分配给多个行
因此,我需要多对多的关系表看起来像这样,但我不知道如何插入填充信息:
LineCostCenterMapping
IdLineCostCenterMapping IdCostCenter SplitLine IdTravelComponent
1 1 0 1
1 2 0 1
2 1 1 1
2 2 1 1
3 1 0 2
我开始编写插入查询,这将填充此表的数据,但我不知道如何完成它
INSERT INTO LineCostCenterMapping (IdCostCenter, SplitLine, IdTravelComponent)
SELECT
ce.IdCostCenter,
tcl.SplitLine,
tcl.IdTravelComponent
FROM TravelCostCenterLine tcl
JOIN
CostCenter
ce ON tcl.IdCostCenter = ce.IdCostCenter;
所以它看起来像LineCostCenterMapping示例
答案 0 :(得分:1)
没有特殊的语法来填充多对多表,这是通常的插入语句,但是您将在 LineCostCenterMapping 中插入的值应该已经存在于 CostCenter 和 TravelCostCenterLine 。要确保您可以在GUI中使用此约束,例如Combobox或自动填充字段,其现有值为 CostCenter , TravelCostCenterLine
您能提供有关您的应用程序的更多信息:编程语言,DBMS ......
答案 1 :(得分:0)
为此,您必须创建一个新表。 例如,表格如下:
CostCenter
IdCostCenter CostCenterNumber CostCenterName
1 1 Name 1
2 2 Name 2
TravelCostCenterLine
IdCostCenterLine IdTravelComponent SplitLine Percentage
1 1 0 25
2 1 0 25
3 1 1 30
4 1 1 20
5 2 0 100
然后你应该使用这两个表关系id创建新表
third_table
id costCenterid TravelCostCenterLine
1 primary_key_of_first_table primary_key_of_second_table
最后一个表将保存两个基表之间的关系。