2009-08-11 3 views
0

필드 (id, parent_id, name, created_at)가있는 테이블이 있습니다. id, name, created_at, parent_created_at를 선택하는 쿼리를 작성하고 싶습니다. 'parent_created_at'은 parent와 일치하는 레코드의 'created_at'필드입니다 (레코드가 parent_id> 0 인 경우). 그렇지 않으면 'parent_created_at'필드가 null이어야합니다. 어떤 제안?ANSI SQL 질문

답변

0

자체가, + ANSI SQL 사례 표현

SELECT t.id 
     , t.name 
     , t.created_at 
     , CASE WHEN t.parent_id > 0 THEN p.created_at ELSE NULL END AS parent_created_at 
FROM Table t 
JOIN Table p 
ON  t.id = p.parent_id 
+0

그렇진 결과는 내가 예상 : P AS 는 MySQL의>를 선택 t.id, t.title는, t.created_at는, u.name는, CASE는 t.parent_id> 0 다음 p.created_at ELSE NULL END arent_created_at 사용자 u, 테이블 t 조인 테이블 p on t.id = p .parent_id 여기서 t.creator_id = u.id; parent_ids가 각각 0과 1 인 테이블 'table'1에 2 개의 레코드가 있습니다. 두 행 모두를 표시 할 것을 기대했습니다. parent_id = 0 인 행만 표시됩니다 ..? * 흠집 머리 * –

+0

이런. 머리를 긁지 않고 2 행 테이블에 대한 모든 세부 정보를 제공하는 방법은 무엇입니까? 약 10 초 정도 걸리면 모든 사람의 시간을 낭비하지 않아도됩니다. 이 정보를 제공하는 방법에 대한 템플릿은 내 대답을 참조하십시오. –

+0

@Morpheous 및 @Svetlozar : (왼쪽 외부 조인은 필요한 모든 것이지만, 세부 정보를 제공하는 것은 여전히 ​​일반적입니다.) –

0

Morpheous 가입

당신은 테이블에 두 개의 행이 있으므로 모든 세부 사항을 제공하는 문제를 확인하시기 바랍니다! 부모님의 말은 모두 parent_ids의 내용이며 쿼리의 조인 조건은 그 이상에 달려 있습니다. 그래서 우리는 전체 세부 사항을 알고 아래

는합니다 ... 입력 할 수 있습니다?

CREATE TABLE t(... 
INSERT INTO t VALUES (... 
INSERT INTO t VALUES (...