孫女

2017-05-23 66 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