繁体   English   中英

存储过程(T-SQL)连接多个表

[英]Stored Procedure (T-SQL) Join multiple tables

我目前正在Microsoft SQL Server Management Studio(SQL Server)中处理t-sql查询,该查询应在多个表上收集数据。 最后,我需要[OfferId]和[Label]。 您是否有关于将这4条查询语句写成1的想法?

SELECT a.OfferId AS [OfferId], a.OfferDataId AS [OfferDataId], b.DeliveryModelPoolId AS [DeliveryModelPoolId]
FROM [Offer].[Offer] a
INNER JOIN  [Offer].[OfferData] b
ON a.OfferDataId = b.OfferDataId

OfferId | OfferDataId | DeliveryModelPoolId
1 .......... | 1 .................. | 4

SELECT a.DeliveryModelPoolId AS [DeliveryModelPoolId], b.PoolId AS [PoolId]
FROM [Offer].[OfferData] a
INNER JOIN [Offer].[Pool] b
ON a.DeliveryModelPoolId = b.PoolId

DeliveryModelPoolId | PoolId
4 ................................ | 4

SELECT a.DeliveryModelId AS [DeliveryModelId]
FROM [Offer].[Delivery] a
INNER JOIN [Offer].[Pool] b
ON a.DeliveryModelPoolId = b.PoolId

DeliveryModelId
2
6

SELECT a.Label AS [Label]
FROM [Offer].[DeliveryModel] a
INNER JOIN [Offer].[DeliveryLabels] b
ON a.DeliveryModelId = b.DeliveryModelId

标签
服务中心
开车送

非常感谢! :)

如果您打算重用查询,我将其放入视图中:

CREATE VIEW vWOfferData
AS   
SELECT a.offerID, dl.label
FROM [Offer].[Offer] a
INNER JOIN  [Offer].[OfferData] b
ON a.OfferDataId = b.OfferDataId
INNER JOIN [Offer].[Pool] p2
ON b.DeliveryModelPoolId = p2.PoolId
INNER JOIN [Offer].[Delivery] d3
ON d3.DeliveryModelPoolId = p2.PoolId
INNER JOIN [Offer].[DeliveryModel] dl
ON dl.DeliveryModelId = d3.DeliveryModelId

然后,您可以将其用作表格。 例如:

SELECT * FROM vWOfferData

您可以在一个查询中多次加入

select a.offerID, dl.label
FROM [Offer].[Offer] a
INNER JOIN  [Offer].[OfferData] b
ON a.OfferDataId = b.OfferDataId
inner join [Offer].[Pool] p2
ON b.DeliveryModelPoolId = p2.PoolId
inner join [Offer].[Delivery] d3
ON d3.DeliveryModelPoolId = p2.PoolId
inner join [Offer].[DeliveryModel] dl
  on dl.DeliveryModelId = d3.DeliveryModelId

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM