【发布时间】:2019-07-18 16:21:34
【问题描述】:
我有一个三级 SQL 表树;父母,孩子,孤儿。
我希望从父项中选择一行,即父键“ID”=3
然后选择table1 child where child1 key "ID1"=3 IF....中的所有行
Orphan child table2 是“ID2”的列表,充当“ID1”的过滤器
我尝试了左连接:
SELECT [itemName]
FROM [dbo].[table]
WHERE [ID] = 3
LEFT OUTER JOIN [dbo].[table1]
ON [dbo].[table].[ID] = [dbo].[table1].[ID1]
哪里出了问题,我什至还没有弄清楚 table1 的第 3 级过滤。
这些是我的表定义。
CREATE TABLE [dbo].[table] (
[ID] INT NOT NULL IDENTITY(1, 1) PRIMARY KEY,
[Company] varchar(250)
);
CREATE TABLE [dbo].[table1] (
[t1_fid] INT NOT NULL IDENTITY(1, 1) PRIMARY KEY,
[Product] varchar(250),
[Description] varchar(250),
[ID1] INT FOREIGN KEY REFERENCES [dbo].[table]([ID]) ON UPDATE CASCADE ON DELETE CASCADE
);
CREATE TABLE [dbo].[table2] (
[t2_fid] INT NOT NULL IDENTITY(1, 1) PRIMARY KEY,
[someValue] INT,
[ID2] INT FOREIGN KEY REFERENCES [dbo].[table]([t1_fid]) ON UPDATE CASCADE ON DELETE CASCADE
);
我的桌子就是这样。
table:
[ID] [Company]
1 companyA
2 companyB
3 companyC
table1:
[t1_fid] [Product] [Description] [ID1]
1 Tree Green 3
2 House Built 1
3 Tree Dead 3
4 Car White 2
5 House Sold 3
6 Car Crashed 3
7 Car Sold 3
table2:
[t2_fid] [someValue] [ID2]
1 60 1
2 2 2
3 15 5
4 0 6
所以这是我想要的结果表。它是所有companyC产品的表格,也存在于table2中。
[Company] [Product] [Description] [someValue]
companyC Tree Green 60
companyC House Sold 15
companyC Car Crashed 0
我希望有足够的信息!
【问题讨论】:
标签: sql sql-server recursion