0

我有两个表,发票和成员,通过字段 InvoiceNum 通过 PK/FK 关系连接。我创建了以下 sql,它工作正常,并按预期提取 44 条记录。

SELECT
  INVOICES.InvoiceNum,
  INVOICES.GroupNum,
  INVOICES.DivisionNum,
  INVOICES.DateBillFrom,
  INVOICES.DateBillTo
FROM INVOICES 
INNER JOIN MEMBERS ON INVOICES.InvoiceNum = MEMBERS.InvoiceNum
WHERE MEMBERS.MemberNum = '20032526000'

现在,我想用INVOICES.GroupNumand替换INVOICES.DivisionNum上述查询中的GroupNameand DivisionName。这些值存在于 Groups 和 Divisions 表中,这些表也具有相应的 Group_num 和 Division_num 字段。我创建了以下 sql。问题是它现在提取了 528 条记录而不是 44 条!

SELECT
  INVOICES.InvoiceNum,
  INVOICES.DateBillFrom,
  INVOICES.DateBillTo,
  DIVISIONS.DIVISION_NAME,
  GROUPS.GROUP_NAME
FROM INVOICES 
INNER JOIN MEMBERS ON INVOICES.InvoiceNum = MEMBERS.InvoiceNum 
INNER JOIN GROUPS ON INVOICES.GroupNum = GROUPS.Group_Num
INNER JOIN DIVISIONS ON INVOICES.DivisionNum = DIVISIONS.Division_Num
WHERE MEMBERS.MemberNum = '20032526000'

任何帮助是极大的赞赏。

4

2 回答 2

0

您的表之间至少有一个关系在您的查询中丢失。它为您提供额外的记录。查找所有常见字段。比如说,部门与群体有关吗?

于 2012-06-26T17:21:25.873 回答
0

就 SQL 语法而言,该语句很好。

但是你必须问自己的问题(并回答它):

  • Groups你得到多少行GroupNum
  • 同上Divisions- 存在多少行DivisionNum

这些数字似乎不是唯一的-每个数字存在多行-因此您会返回多行

于 2012-06-26T17:21:27.083 回答