今日まで、内部結合についての私の考えは、結合条件を満たすテーブルに存在する行の最小数を返すことでした。
元。テーブルAに4行が含まれ、テーブルBに7行が含まれる場合。結合条件を満たす場合、4行が最大出力になると期待していました。
2つの一時テーブルを作成し、それらにデータを入力するspを作成しました。それから私はそれらの内部結合を取りましたが、より多くの行を返しました(私の場合、29行が返されました私は4を期待していました)いくつかの検索の後、私はこの リンクを見つけました
これは私が起こる可能性があることを確認しますが、返される結果を制限するための私のオプションは何ですか?
以下は私のストアドプロシージャです。
ALTER PROCEDURE [dbo].[GetDDFDetailOnSiteCol]
@siteId int,
@colNum int
AS
BEGIN
SET NOCOUNT ON;
create Table #portDetail
(
ddfId int,
portDetail nvarchar(50),
siteId int
)
Insert into #portDetail SELECT ddf.id, ddf.portDetail, site.Site_ID from site
inner join ddf ON site.Site_ID = ddf.siteCodeID
where ddf.siteCodeID = @siteId and ddf.colNo= @colNum
order by colNo,blockNum,portRowNum,portColNum
create Table #portAllocationDetail
(
assigned_slot nvarchar(50),
siteId int
)
Insert into #portAllocationDetail
SELECT dbo.portList.assigned_slot, dbo.site.Site_ID
FROM dbo.portList INNER JOIN
dbo.site ON dbo.portList.siteCodeID = dbo.site.Site_ID
where dbo.site.Site_ID = @siteId
--select * from #portAllocationDetail
Select #portDetail.ddfId,#portDetail.portDetail,#portAllocationDetail.siteId,#portAllocationDetail.assigned_slot FROM #portDetail
INNER JOIN #portAllocationDetail
ON
#portDetail.siteId = #portAllocationDetail.siteId
END