祝所有人满意!* / / p>
我正在使用三张桌子,而且我很难加入连接。表1包含字段名称,ID,状态,销售额。表2包含州和州ID(以及其他)。表3具有stateID和region(以及其他)。我需要的是表1中的stateID和region字段。
我尝试的是
select name, id, state, stateID, region, sales
from table 1 taba
left join table 2 tabb
on taba.state = tabb.state
left join table 3 tabc
on tabb.stateid = tabc.stateid
这使表1从~16k行到~100k行
我自己尝试了第一次加入并获得了正确的行数。当我进行第三次连接时,如何摆脱这些重复的行?
Table 1
Name ID State Sales
John 01 Texas 50,234
Steve 02 Washington 39,261
Amanda 03 Ohio 67,892
Table 2
State StateID
Texas TX
Washington WA
Ohio OH
Table 3
StateID Region
TX South
WA Northwest
OH Midwest
我需要它看起来像这样:
Name ID State StateID Region Sales
John 01 Texas TX South 50,234
Steve 02 Washington WA Northwest 39,261
Amanda 03 Ohio OH Midwest 67,892
答案 0 :(得分:1)
我假设每个州都有多个区域,但表1中没有任何区域表示区域。因此,当您加入表3并且该州有100个区域时,您唯一加入的是stateID,它将返回所有100个区域。
您可能需要在第一个表格中指明区域和状态,或者您可以在查询中投放DISTINCT。
JSpinner
根据您提供的新表和数据,这应该可以满足您的需求:
select DISTINCT name, id, state, stateID, region, sales
from table 1 taba
left join table 2 tabb
on taba.state = tabb.state
left join table 3 tabc
on tabb.stateid = tabc.stateid
答案 1 :(得分:0)
我认为使用此查询应该可以胜任。
select name, id, state, stateID, region, sales
from table1 natural join table2 natural join table3
因为表对属性使用相同的名称,所以可以使用自然连接(它只保留公共属性,假设table1中的所有状态都在table2中,而table2中的所有stateID都在table3中)。
如果你需要每个名字的销售总额(你的问题不明确):
select name, id, state, stateID, region, SUM(sales)
from table1 natural join table2 natural join table3
group by name, id, state, stateID, region