SQL-为什么我的查询返回所有可能的排列?

SQL-为什么我的查询返回所有可能的排列?,sql,sql-server,left-join,Sql,Sql Server,Left Join,我有一个包含以下数据的表 ID Bid Outcome 1 2 1 2 2 2 我想查询带有左联接的表,以便将bid和outputID转换为可读的视图。当我应用连接时,SQL将返回所有可能的数据排列,而不仅仅是转换FK值 这可能是我的join 以下是代码、输出和预期结果: SELECT t1.ID, b.Name as Bid, o.Name as Outcome From table1 as t1 left join bid

我有一个包含以下数据的表

ID     Bid    Outcome 
1       2       1
2       2       2
我想查询带有左联接的表,以便将
bid
output
ID转换为可读的视图。当我应用连接时,SQL将返回所有可能的数据排列,而不仅仅是转换FK值

这可能是我的
join

以下是代码、输出和预期结果:

SELECT
t1.ID,
b.Name as Bid,
o.Name as Outcome

From table1 as t1 
left join bid as b on b.ID = b.ID 
left join outcome as o on o.ID = o.ID
ID   Bid   Outcome 
1    Lay   Win
2    Lay   Loss
当前结果:

1       Back    Win
1       Back    Loss
1       Lay     Win
1       Lay     Loss
2       Back    Win
2       Back    Loss
2       Lay     Win
2       Lay     Loss
预期结果:

SELECT
t1.ID,
b.Name as Bid,
o.Name as Outcome

From table1 as t1 
left join bid as b on b.ID = b.ID 
left join outcome as o on o.ID = o.ID
ID   Bid   Outcome 
1    Lay   Win
2    Lay   Loss

正如松鼠所说,你们是在同一张桌子上,应该是这样

 SELECT
    t1.ID,
    b.Name as Bid,
    o.Name as Outcome
    
    From table1 as t1 
    left join bid as b on b.ID = g.ID 
    left join outcome as o on o.ID = g.ID

anymede as g left join bid as b on b.ID=b.ID
您在同一列上留下了join。另一个
join
请在代码问题中给出一个--cut&paste&runnable代码,包括作为代码输入的最小代表性示例;期望和实际输出(包括逐字记录错误消息);标签和版本;清晰的说明和解释。尽可能少地给出代码,即显示为OK的代码,并通过显示为not OK的代码进行扩展。(调试基础。)用于包含DBMS和DDL(包括约束和索引)的SQL,并以表格式作为代码输入。暂停总体目标的工作,将代码切掉到第一个表达式,没有给出您期望的内容,说出您期望的内容和原因。表
gaymede
ID
不太可能是引用其他表的列。
gaymede
是主表<代码>投标&
结果
是转换表-这对我来说是有效的@Squirrel,但这不是正确的方法吗?@Dallas您没有向我们展示所有3个表的模式,我不知道列名是什么,也无法真正注释查询是否正确。但是加入
b.ID=g.ID
o.ID=g.ID
是相当不寻常的。我认为应该是类似于
b.ID=g.Bid
o.ID=g.Outcome
这样做确实解决了我的问题,我加入了同一列上的表。尽管这个解决方案有效,但我还是会引用@Squirrel comment,因为它支持有意义的命名约定