2016-07-20 9 views
0

を参照してください、私は次のようになり、テーブルがあります:私はchild = Yを持つレコードとその親を取得しようとしていますMYSQL選択クエリの条件が同じテーブル

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 

status = complete

これは私が得ようとしている出力です

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

これまでのところ、私が使用しているメソッドは、すべてのレコードをchild=Yで照会し、前回の照会からparent_codeの各codeベースのステータスを取得するために再度ループしています。

クエリをよりシンプルにすることはできますか?

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

あなたは親の状態によって何を意味するか –

+0

@Jensを期待している出力テーブルを追加しますか?親のため親が自分自身には 'parent_code'はありません –

+0

@JosephGoh私はあなたの質問を参照しています:'親の状態=完了 ' – Jens

答えて

1

はこの1つをチェックしてください:

1

自己の参加は、作業を行う必要があります。

SELECT C.* 
    FROM tblA C 
    INNER JOIN tblA P ON P.code = C.parent_code 
    WHERE C.child = 'Y' 
     AND P.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

関連する問題