2016-07-20 2 views
0

У меня есть таблица, которая выглядит как: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 

Я пытаюсь получить запись с 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, что вы имеете в виду родительского статуса? сам родитель не будет иметь родительский код, потому что он является родителем –

+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

Благодарим вас за 'self join', никогда не знаю, что я могу присоединиться к самой таблице, но я должен выбрать для ответа, который близок к тому, что я хочу. –

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

Смежные вопросы