我有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
答案 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