2016-01-01 42 views
-4

定父ID我有4個不同的表:如何從不同的表中的所有子記錄基於SQL Server中

select * from System; 
select * from Set; 
select * from Item; 
select * from Versions; 

現在,每一個系統ID會有ň節數設置,並且每組將會有n沒有。項目每個項目將會有n版本號

每個系統都有:

  • N無一套
  • 每一集都有
    • N無項目
    • 每個項目都有
      • N無版本

當我有一個特定的SystemId,我想從Set每組的Items,並在單個存儲過程中每個項目的Versions檢索的所有記錄,用不同的ID的重新插入這些記錄到各自的表。

+0

搜索'INNER JOIN'或'IN'或'EXISTS' –

+0

你是什麼意思'不同Id's.'再次插入相應的表中的記錄?你可以舉例 – Utsav

+0

一旦我檢索所有孩子的記錄,那麼我已經再次將它們插入到具有不同系統ID參考的那些表格中。 – Jyo

回答

0

您幾乎沒有發現任何問題,我建議您在提問之前先研究一下。 我想改變系統ID,那麼如果你對它們進行了正確的歸一化處理,它不會影響其他表格,我的建議是先對它們進行歸一化處理 歸一化後,你不需要複雜的理解邏輯。 根據我的理解,INNER JOIN會爲你效勞。

@SysID int 

SELECT 
* 
FROM System S1, 
INNER JOIN 
SET S2, 
on S1.SystemID = S2.SystemID 
INNER JOIN 
ITEMS S3 
on S2.SetID = S3.SetID 
INNER JOIN 
VERSIONS S4 
on S3.ItemID = S4.ItemID 
WHERE S1.SystemID = @SysID 

包含ID的字段是具有相同名稱的表的主鍵,後跟「ID」和通過其他表引用的外鍵。

讓我知道如果問題 三江源

相關問題