孙女

2017-05-23 67 views
0

谁能帮助我写的SQL代码为这个特定的输出请:孙女

目录树在位于同一地点(即tr_loc值是相同的),并且其中一棵树是孙女另一个。 Table data

这是我想出了但是我相信它是错误的:

SELECT tr_loc a, tr_loc b, Tr_numb, Tr_forest 
FROM Tree 
WHERE a.tr_loc = b.tr_loc 
    AND a.TR_parent = b.Tr_numb; 
+0

请仔细阅读http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-何时提问/ 285557以及接受的答案 –

回答

1

我想这是你要与你的查询:

SELECT 
a.tr_numb AS granddaughter 
,c.tr_numb AS grandfather 
,a.tr_loc 
,a.Tr_forest 

FROM 
Tree a, Tree b, Tree c 

WHERE 
a.tr_parent = b.tr_numb 
AND b.tr_parent = c.tr_numb 
AND a.tr_forest = c.tr_forest 
AND a.tr_loc = c.tr_loc 

注意如何abc是表Tree的别名。这是一个self join。我会在这里留下这个查询,以便您可以尝试查看您出错的位置。

但是,我不会推荐用于JOIN的语法。学习更明确的语法要好得多。这是我会怎么写查询:

SELECT 
Tree.Tr_numb AS tree 
,Parent.Tr_numb AS parent 
,Grandparent.Tr_numb AS grandparent 
,Tree.tr_forest 
,Tree.tr_loc 

FROM 
Tree 
INNER JOIN Tree [Parent] ON (Parent.Tr_numb = Tree.Tr_parent) 
INNER JOIN Tree [Grandparent] ON (Grandparent.Tr_numb = Parent.Tr_parent) 

WHERE 
Tree.Tr_loc = Grandparent.Tr_loc