Sql server 结构化查询语言连接查询
我是SQL新手。这是多个表的正确连接吗Sql server 结构化查询语言连接查询,sql-server,tsql,join,syntax,Sql Server,Tsql,Join,Syntax,我是SQL新手。这是多个表的正确连接吗 select * from [dbo].[Quotes] Q ,[dbo].[Invoices] I ,[dbo].[Receipts] R , [dbo].[QuoteLines] QL where QL.QuoteID = Q.ID AND I.QuoteID = Q.ID AND R.QuoteID = Q.ID AND QL.Amount = 336.47 and QL.TravelType = 'International' and
select * from [dbo].[Quotes] Q ,[dbo].[Invoices] I ,[dbo].[Receipts] R ,
[dbo].[QuoteLines] QL where QL.QuoteID = Q.ID AND I.QuoteID = Q.ID
AND R.QuoteID = Q.ID AND QL.Amount = 336.47 and QL.TravelType = 'International' and QL.Type = 'Accommodation'
你的问题
这是多个表的正确联接吗
答案应该是否定的。。。它可能会像预期的那样工作,但这种连接方式已经过时几个世纪了
您的方法将所有表命名为逗号分隔的。这将产生一个巨大的笛卡尔积,即每行与每行的组合。下面的WHERE
子句确保您将只获得所需的/相关的行和列
不知道你的结构这是一个盲目的飞行,但我认为你在寻找这样的东西:
select *
from [dbo].[Quotes] Q
inner join [dbo].[QuoteLines] QL on Q.ID=QL.QuoteID
inner join [dbo].[Invoices] I on I.QuoteID=Q.ID
inner join [dbo].[Receipts] R on R.QuoteID=Q.ID
where QL.Amount = 336.47
and QL.TravelType = 'International'
and QL.[Type] = 'Accommodation';
如果不是每行的另一侧都有相应的行,您可能需要将内部
更改为左侧
。您的问题
Try this:-
Select table1.ID ,table1.Name
from Table1
inner join Table2 on Table1 .ID =Table2 .ID
inner join Table3 on table2.ID=Table3 .ID
where table1.Name = Table3.Name
这是多个表的正确联接吗
答案应该是否定的。。。它可能会像预期的那样工作,但这种连接方式已经过时几个世纪了
您的方法将所有表命名为逗号分隔的。这将产生一个巨大的笛卡尔积,即每行与每行的组合。下面的WHERE
子句确保您将只获得所需的/相关的行和列
不知道你的结构这是一个盲目的飞行,但我认为你在寻找这样的东西:
select *
from [dbo].[Quotes] Q
inner join [dbo].[QuoteLines] QL on Q.ID=QL.QuoteID
inner join [dbo].[Invoices] I on I.QuoteID=Q.ID
inner join [dbo].[Receipts] R on R.QuoteID=Q.ID
where QL.Amount = 336.47
and QL.TravelType = 'International'
and QL.[Type] = 'Accommodation';
如果不是每一行的另一侧都有相应的行,您可能需要将
internal
更改为left
。查询可能会运行,但更大的问题是输出是否是您真正期望的。输出是您期望的吗?查询可能会运行,但更大的问题是输出是否是您真正期望的。输出是你期望的吗?已经过时几个世纪了LOL:-)正如你所说,它显然已经过时了。所有主要的db系统都实现了自2001年以来的加入。几个世纪以来都过时了,LOL:-)正如您所说的,它显然已经过时。自2001年以来,所有主要的数据库系统都实现了JOIN。虽然欢迎使用此代码片段,并可能提供一些帮助,但它将介绍如何以及为什么解决此问题。记住,你是在将来回答读者的问题,而不仅仅是现在提问的人!请在回答中添加解释,并说明适用的限制和假设。虽然欢迎使用此代码片段,并可能提供一些帮助,但它将说明如何以及为什么解决此问题。记住,你是在将来回答读者的问题,而不仅仅是现在提问的人!请在回答中添加解释,并说明适用的限制和假设。
Try this:-
Select table1.ID ,table1.Name
from Table1
inner join Table2 on Table1 .ID =Table2 .ID
inner join Table3 on table2.ID=Table3 .ID
where table1.Name = Table3.Name