c# T-SQL连接和联合

本文关键字:连接 T-SQL | 更新日期: 2023-09-27 18:13:19

我有一个关于连接表的问题。

我有11个表,一个父表和10个子表。所有的主键都是EventName,从父节点到子节点的关系也是EventName。子表名称为SR1Laptimes、SR2Laptimes等× 10。

子表中的模式是相同的。我试图将事件表连接到SR1Laptimes,然后联合所有的子表在一起,但无法让它工作。

在这疯狂的背后有一个方法,但需要一些时间来解释。这里的代码无论如何,任何反馈将非常感激。注:代码在复制和粘贴中没有完成。

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);

c# T-SQL连接和联合

我想你缺少UNION ALL条款:

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

您尝试'联合所有'的表有相同的列吗?这可能就是问题所在。

这个例子可能对你有帮助。

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