簡體   English   中英

C#T-SQL聯接和聯合

[英]C# T-SQL Join and Union

我有一個關於聯接表的問題。

我有十一張桌子,一個父母有十個子桌子。 所有的主鍵都是EventName ,從父級到子級的關系也都是EventName。 子表名稱是SR1Laptimes,SR2Laptimes等x 10。

子表中的架構是相同的。 我試圖將事件表加入SR1Laptimes,然后將所有子表合並在一起,但無法正常工作。

這種瘋狂背后有一種方法,但是需要一些時間來解釋。 無論如何,這是代碼,任何反饋將不勝感激。 PS在此副本中粘貼未完成的代碼。

myCommand.CommandText = "SELECT MIN(Q1), MIN(Q2), MIN(Q3), MIN(Q4), MIN(LaptimesMinutes), MIN(LaptimesSeconds) FROM Events LEFT JOIN SR1Laptimes ON Events.EventName = SR1Laptimes.EventName SELECT * FROM SR1Laptimes UNION ALL SELECT * FROM SR2Laptimes UNION ALL SELECT * FROM SR3Laptimes WHERE (Events.Track = @track) AND (Events.Number = @number) AND (Events.Rider = @rider)";
myCommand.Parameters.AddWithValue("@track", analysisTrackComboBox.Text);
myCommand.Parameters.AddWithValue("@number", analysisNumberComboBox.Text);
myCommand.Parameters.AddWithValue("@rider", analysisRiderComboBox.Text);

我認為您在以下位置缺少UNION ALL子句:

 ... ON Events.EventName = SR1Laptimes.EventName *HERE* SELECT * FROM SR1Laptimes ...

您嘗試“全部合並”的表是否具有相同的列? 那可能是問題所在。

最后的“ where”子句僅對SR3Laptimes有效。

本示例可能會為您提供幫助。

DECLARE @Parent TABLE (id INT,sth NVARCHAR(100))

DECLARE @ChildTest1 TABLE(id INT,parentId INT, sth NVARCHAR(100))

DECLARE @ChildTest2 TABLE(id INT, parentId INT, sth NVARCHAR(100))

INSERT INTO @Parent
SELECT 1,'Ali'
UNION ALL
SELECT 2,'Veli'
UNION ALL
SELECT 3,'Ahmet'


INSERT INTO @ChildTest1
SELECT 1,1,'Parent1_Child1_1strow'
UNION ALL
SELECT 2,1,'Parent1_Child1_2ndrow'
UNION ALL
SELECT 3,2,'Parent2_Child1_1strow'


INSERT INTO @ChildTest2
SELECT 1,1,'Parent1_Child2_1strow'
UNION ALL
SELECT 2,2,'Parent2_Child2_1strow'
UNION ALL
SELECT 3,3,'Parent3_Child2_1strow'

SELECT * FROM @Parent p
LEFT JOIN (
    SELECT * FROM @ChildTest1 ct1

    UNION ALL

    SELECT * FROM @ChildTest2 ct2
) s ON p.id =s.parentId
--WHERE p.id = 3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM