2016-07-20 30 views
0

我有一個表,看起來像:MYSQL - 選擇查詢Where條件是指同一臺

TBLA

code | name | parent_code | status | child 
--------------------------------------------------------- 
1  | ABC  |     | complete | N 
1.1  | ABC.1  | 1    | pending | Y 
2  | BCD  |     | pending | N 
2.1  | BCD.1  | 2    | pending | Y 

我試圖讓與child = Y的記錄,它的父status = complete

這是我想要獲得的輸出

code | name | parent_code | status | child 
---------------------------------------------------------- 
1.1  | ABC.1  | 1    | pending | Y 

到目前爲止,我正在使用的方法是查詢帶有child=Y的所有記錄,並再次循環以獲取來自先前查詢的每個code基於parent_code的狀態。

是否可以使查詢更簡單?

+1

添加您期待 –

+0

@Jens您可以通過父狀態的意思輸出表?父母本身將不會有'parent_code',因爲他們是父母 –

+0

@JosephGoh我指的是你的問題:'它的父母狀態=完成' – Jens

回答

1

檢查這一項。

SELECT C.* 
    FROM tblA C 
    INNER JOIN tblA P ON P.code = C.parent_code 
    WHERE C.child = 'Y' 
     AND P.status = 'complete' 
1

自加入應該做的工作:

SELECT child.* 
from tblA child join tblA parent on child.parent_code =parent.code 
WHERE parent.child = 'N' and parent.status = 'complete' 
+0

謝謝你的「自我加入」,永遠不知道我可以加入自己的桌子,但我必須選擇接近我想要的答案。 –

0
SELECT code, name , parent_code,status, child 
from tblA 
WHERE child = 'Y' and status = 'PENDING' 

pl. try i am not sure about your resultset 
+0

您的代碼根本不檢查父級的狀態 – Marki555