我有一个关于加入表的问题。
我有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);
答案 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