我需要找出在SQL中查询父/子关系的最佳方法。一些父域将成为子域的数据。下面是一个示例:
ID Field1 Field2 ParentId
--------------------------------------------
1 stuff moreStuff 0
2 childStuff (from parent) 1因此,子对象的Field2将是父对象的值。我需要弄清楚如何编写我的SQL,以便当记录被拉回时,子对象的Field@将是"moreStuff“。我正在使用SQL server 2008。谢谢。
发布于 2010-02-09 21:39:13
假设Field2不能为NULL,您可以使用带有COALESCE的左连接:
SELECT T1.ID, T1.Field1, COALESCE(T2.Field2, T1.Field2) AS Field2, T1.ParentID
FROM Table1 T1
LEFT JOIN Table1 T2
ON T1.ParentID = T2.ID如果Field2可以为空,则将合并表达式替换为以下内容:
CASE WHEN T2.Id IS NULL THEN T1.Field2 ELSE T2.Field2 END AS Field2发布于 2010-02-09 21:30:32
在这种情况下,自连接应该可以为您完成此操作。
SELECT child.ID,
child.Field1,
parent.Field2,
child.ParentID
FROM MyTable child JOIN MyTable parent ON child.ParentID = parent.ID发布于 2010-02-09 21:31:14
在表格上使用self join:
SELECT parent.Field1, parent.Field2, child.ID
FROM myTable child
INNER JOIN myTable parent
ON child.ParentId = parent.IDhttps://stackoverflow.com/questions/2229317
复制相似问题