2012-08-23 4 views
2

경우 나는 브라보의 다음MySQL의 부모 정보가 자식 계정

id name  created   parent 
------------------------------------------------ 
1  Alpha  11385209583  0 
2  Bravo  11385209619  0 
3  Bravo-A 11385209701  2 
4  Bravo-B 11385209777  2 

브라보-A와 브라보-B는 그런 아이 같은 데이터가있는 테이블이 있습니다.

이메일 주소가있는 다른 테이블이 있습니다 (JOIN 이메일 주소는 a.id = e.account_id).하지만 부모 계정에만 이메일이 있습니다. 즉, Bravo-A의 이메일은 Bravo입니다.

accounts.id 번호가있는 경우 올바른 계정에 대한 emails.email 필드를 제공하는 쿼리를 작성할 수 있습니까 (id가 1 인 경우 account_id = 1, id가 2 인 경우 account_id = 2). , 3 또는 4)?

(이 조금 자세한 정보 또는 지점으로, 내가 문제를 verbalizing을 가졌다없는 경우 내 사과!)

+0

그래서 id = 3 인 경우 Bravo의 이메일을 보내시겠습니까? –

+0

_top-level_ 계정에만 전자 메일 또는 모든 _parent_ 계정이있을 수 있습니다 (예 : Bravo-B에 자식이있는 경우 전자 메일을 가질 수 있습니까?). –

+0

@XavierHolt 나는 그것이 OP가 원하는 부모의 이메일 주소가 어린이의 이메일 주소라고 생각한다 –

답변

0

답변!

SQL로 찾은 것은 항상 더 우아한 방법입니다.

1

가장 쉬운 방법은 계정 테이블에 다른 필드를 배치하는 것입니다 (예를 들어 "mail_id을"), 저장 각 전자 메일의 ID가 있으며 해당 필드를 기반으로 조인을 수행합니다. 당신은 왜하지 emailacountparent 열을 가입

+0

Petar에 감사드립니다! – Richard

4

을 원하는 경우 그 방법은 차일 동일하거나 서로 다른 메일을 가질 수있다?

SELECT a.*, 
     e.emailadd as parentEAdd, 
     COALESCE(b.emailadd,'') as ChildEAdd -- can contain null values when 
              -- parentID is 0 
FROM `accounts` a 
      INNER JOIN `emails` e 
        ON a.id = e.account_id 
      LEFT JOIN `emails` b 
        ON a.parent = b.account_id 
+0

대단히 감사합니다. 존! – Richard

+0

@ 리차드 킹 환영합니다! –