C#T-SQL Join和Union

时间:2014-07-16 10:10:03

标签: c# sql join union-all

我有一个关于加入表的问题。

我有11个表,一个父表有十个子表。 所有主键都是EventName ,父亲与子女之间的关系也是EventName。子表名称为SR1Laptimes,SR2Laptimes等x 10。

子表中的模式是相同的。我尝试将事件表连接到SR1Laptimes,然后将所有子表联合起来,但无法使其工作。

这种疯狂背后有一种方法,但需要一些时间来解释。无论如何,这里是代码,任何反馈都将非常感激。 P.S此复制和粘贴中未完成的代码。

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

3 个答案:

答案 0 :(得分:4)

我认为您错过了UNION ALL条款:

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

答案 1 :(得分:0)

你试图将所有表格联合起来吗?有相同的列?这可能是问题所在。

并且'其中'最后的子句仅对SR3Laptimes有效。

答案 2 :(得分:0)

此示例可能对您有所帮助。

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