将两个表与fkey关系组合在一起

时间:2014-06-04 07:32:29

标签: mysql sql

我正在尝试连接两个只与另一个表(第3个表)相关的表,并且这两个表的标识是第3个表的外键。请参考下图,以便我可以完整地描述我想要实现的目标。

enter image description here

关系规格:

  • Actual.Id = Actual x Budget.Id
  • Budget.Id = Actual x Budget.Id
  • Budget.DateField = Actuals x Budget.DateField
  • 最后一个关系:它们被分配为实际x上的相同数据 Budget.ColA

这是可以实现的,还是应该更改我的数据库架构?

1 个答案:

答案 0 :(得分:0)

对于您的ActualXBudget表格,请勿使用单个字段来识别实际和预算中的ID。使用两列,一列用于budgetID,另一列用于ActualID。这样,ActualXBudget中的一行将链接到预算和实际。

根据您的设计,数据库不知道预算ID 4 =实际ID 1。

使用ActualXBudget表中的实际ID和预算ID,您可以对两个表执行简单连接并提取附加记录,例如

SELECT Actual.ColA,Actual.ColB,Budget.ColB,Budget.ColC FROM
(Actual INNER JOIN ActualXBudget ON Actual.ID = ActualXBudget.ActualID)
INNER JOIN Budget ON Budget.ID = ActualXBudget.BudgetID

编辑:您可以使用您的设置

 SELECT Actual.ColA,Actual.ColB,Budget.ColB,Budget.ColC FROM
 (Actual INNER JOIN ActualXBudget ON Actual.ID = ActualXBudget.ID )
 INNER JOIN Budget ON Budget.DateField = ActualXBudget.DateField

但不要这样做。