使用INNER JOIN时获得重复结果

时间:2014-11-24 00:28:57

标签: sql ms-access join

我有3张桌子。一个用户名,一个带有一堆数据,然后一个通过他们的ID将两个表链接在一起。当我尝试用INNER JOIN加入3时,我得到了一堆重复的行。例如,如果数据表只有2000行,一旦我尝试使用内连接来连接3个表,我得到一个显示100,000行的输出。这是否与我的数据表中的行数多于我的用户名表以及内部联接不能很好地发挥作用有关?是否可以内连接一个具有比另一个更多行的表?

编辑清除

对于这个数据库,我导入的数据看起来像这样:

-Names-----------Numbers-----------Item---------------Cost---
John Smith       111-1111          Pencils           100.75  
Joe Stevens      222-2222          Paper             35.34  
Mike Jones       333-3333          Staples           23.86
John Smith       111-1111          Boxes             11.76

正如您所见,John Smith列出两次,分别为两个单独的项目。我想优化它,但是将原始数据分开,只用一次迭代就把它放在自己的表中。

  ID---Name---           ID----Numbers            ID---Items------Cost
  1    John Smith        1    111-1111            1    Pencil     100.75
  2    Joe Stevens       2    222-2222            2    Paper      35.34
  3    Mike Jones        3    333-3333            3    Staples    23.86
                                                  4    Boxes      11.76

现在事情已经过优化,我需要能够运行一个可以将John Smith与铅笔和盒子相匹配的查询。这就是我创建链接表的原因,该链接表以正确的顺序保存ID。

          Name.ID           Number.ID        Item.ID
            1                  1                1
            2                  2                2 
            3                  3                3
            1                  1                4

现在,如果我想运行一个重新创建原始数据转储的报表,我会运行一个只使用内部联接加入3个表的查询。但问题是,我得到了大量重复的结果,而不仅仅是输出应有的数据。我得到这样的东西:

-Names-----------Numbers-----------Item---------------Cost---
John Smith       111-1111          Pencils           100.75 
John Smith       111-1111          Pencils           100.75 
John Smith       111-1111          Pencils           100.75  
John Smith       111-1111          Pencils           100.75 
John Smith       111-1111          Pencils           100.75  
Joe Stevens      222-2222          Paper             35.34 
Joe Stevens      222-2222          Paper             35.34
Joe Stevens      222-2222          Paper             35.34
Joe Stevens      222-2222          Paper             35.34 
Mike Jones       333-3333          Staples           23.86
Mike Jones       333-3333          Staples           23.86
Mike Jones       333-3333          Staples           23.86
Mike Jones       333-3333          Staples           23.86
John Smith       111-1111          Boxes             11.76
John Smith       111-1111          Boxes             11.76
John Smith       111-1111          Boxes             11.76
John Smith       111-1111          Boxes             11.76

所需的输出只是:

-Names-----------Numbers-----------Item---------------Cost---
John Smith       111-1111          Pencils           100.75  
Joe Stevens      222-2222          Paper             35.34  
Mike Jones       333-3333          Staples           23.86
John Smith       111-1111          Boxes             11.76

1 个答案:

答案 0 :(得分:0)

尝试这个

Select Distinct t1.Names,t2.Number,t3.Item,t3.Cost
From  
tableName t1  
inner join tableNum t2  
on t1.ID = t2.ID  
inner join tableItem t3  
on t1.ID = t3.ID