内连接sql语句

时间:2012-06-26 17:15:49

标签: sql tsql

我有两个表,发票和成员,通过字段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.GroupNumINVOICES.DivisionNum替换上述查询中的GroupNameDivisionName。这些值存在于“组”和“分区”表中,这些表还具有相应的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'

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

  • Groups给出的GroupNum行数是多少?
  • Divisions同上 - DivisionNum有多少行?

看起来这些数字不是唯一的 - 每个数字都有多行 - 因此你会得到多行返回