>

간단한 요구 사항이 있지만 필요한 출력을 올바르게 얻을 수 없습니다.

2 개의 테이블이 있습니다-부모, 자녀

부모 테이블에 부모 목록이 있습니다

P1
P2
P3
etc

자식 테이블에 다음과 같은 레코드가 있습니다

P1 | P1_C1
P1 | P1_C2
P2 | P2_C1
P2 | P2_C3
P3 | P3_C4
etc

다음을 반환해야하는 쿼리를 작성해야합니다

첫 번째 행의 부모 레코드, 그 뒤에 자식, 다른 부모 레코드, 그 뒤에 자식 등이 있습니다

예 :

------ | ------
P1     |  null  
null   |  P1_C1   
null   |  P1_C2 
P2     |  null
null   |  P2_C1
null   |  P2_C3
P3     |  nul
null   |  P3_C4


  • 답변 # 1

    두 테이블에서 부모와 자식 (가능한 경우)을 선택하십시오. 그런 다음 부모와 자식을 기준으로 정렬하십시오 (null 자식을 먼저 사용). 자녀를 보여줄 때 부모를 억압하려면 사례 표현이 필요합니다.

    select case when c is null then p end as parent, c as child
    from
    (
      select p, c from children
      union all
      select p, null from parents
    )
    order by p, c nulls first;
    
    

  • 답변 # 2

    이 솔루션을 고려하십시오. 첫 번째 열은 사용하지 말아야합니다. 올바른 정렬에만 사용됩니다 :

    select
        pa.id, null, ch.value
    from
        parent pa
        join child ch on parent.id=child.id
    union
    select
        pa2.id, pa2.id, null
    from
        parent pa2
    order by 1, 3 nulls first;
    
    

  • 이전 C # 명령으로 서비스에 MySQL 서버가 존재하도록 제어하려면 어떻게해야합니까?
  • 다음 sql server - SSMS 찾기 및 바꾸기 파일 "찾아보기"가 변경되지 않도록하는 방법