[英]SQL to retrieve parent-child relationship in parent-child order, from a self referencing table
[英]SQL display parent-child relationship in one table
我有一個名為result_seq
的表,該表具有3列
STEP_ID
, STEP_PARENT
(父代的ID)和STEP_NAME
。 我必須同時顯示父母姓名和孩子姓名,並且該名稱在“ STEP_NAME
列中。 如:
STEP_ID , STEP_PARENT , STEP_NAME;
'{6ef83b76}', '{70207fe2}', 'Check ABC'
對於頂級STEP_ID
, STEP_PARENT
為null。
我目前在select子句中使用子查詢
select
sq.STEP_ID,
sq.STEP_PARENT,
sq.step_name,
(select sq1.step_name
from result_seq sq1, result_seq sq2
where sq1.step_id=sq2.step_parent) as 'parent_name'
from result_seq sq
但由於某種原因,它顯示語法錯誤。 我只是想知道其他人如何解決這個問題
非常感謝
您應該使用LEFT JOIN
SELECT
C.STEP_ID as Child_ID
C.STEP_PARENT as Parent_ID,
C.STEP_NAME as Child,
P.STEP_NAME as Parent
FROM result_seq P
LEFT JOIN result_seq C
ON P.STEP_ID = C.STEP_PARENT
怎么看是容易當你用更好的別名閱讀C
兒童和P
父。
如果您想解決當前查詢。
select
C.STEP_ID,
C.STEP_PARENT,
C.step_name,
(select P.step_name
from result_seq P
where P.step_id = C.step_parent) as 'parent_name'
from result_seq C
但是我不會推薦它,因為外觀會降低性能。 一如既往,最好的方法是同時嘗試一下,看看自己的情況。
您必須加入第一個result_sq和第二個result_sq,否則將獲得所有的“ parent_names”。 這導致語法錯誤。
select
sq.STEP_ID,
sq.STEP_PARENT,
sq.step_name,
(select sq2.step_name
from result_seq sq2
where sq2.step_id=sq.step_parent) as 'parent_name'
from result_seq sq
或者您可以簡單地使用“ LEFT OUTER JOIN”
select
sq.STEP_ID,
sq.STEP_PARENT,
sq.step_name,
sq1.STEP_NAME as 'parent_name'
from result_seq sq
left join result_seq sq1 on sq.STEP_PARENT = sq1.STEP_ID
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.