>

ID (표 1)의 별도 열로 다른 역할 (표 2)을 표시하려면 출력을 생성해야하지만 역할이 표 2에 반드시 있어야하는 것은 아니며 때로는 여러 역할이있을 수도 있습니다. . 나는 여기 붙어 있습니다.

연합을 시도했지만 그로 인해 여러 값을 다른 열로 가져올 수 없습니다

SELECT 
i.id,
i.name,
COALESCE(MAX(CASE WHEN r.ID = i.id THEN r.Role END), 'NA') AS Role,
COALESCE(MAX(CASE WHEN r.Role = rl.Role THEN rl.value END), 'NA') AS value,
COALESCE(MAX(CASE WHEN r.Role = rl.Role   THEN rl.value_2 END), 'NA') AS value_2

에서     employee_id AS i     왼쪽 입사 직원 _ 역할 r r r id = i id     왼쪽 가입 역할 rl ON r.role = rl.role GROUP BY     i.id,     i. 이름

아래 테이블 구조를 찾으십시오 :

표 1 : Employee_id
아이디 이름
100021 밥
100023 톰
100024 짐

표 2 : Employee_Role
ID 역할
100023 사용자 1
100024 Beta_user
사용자 100024 명

표 3 : 역할
역할 값 value_2
Beta_user zz 56
사용자 23 ss
user1 sd 45

필수 _ 결과
ID 이름 역할 값 value_2 100021 밥나 나나나 100023 톰 사용자 1 SD 45 100024 Jim Beta_user zz 56 100024 Jim 사용자 23ss


  • 답변 # 1

    알 수 있듯이 집계는 필요하지 않습니다 :

    SELECT e.id, e.name, er.role,
           COALESCE(rl.value, 'NA') AS value,
           COALESCE(rl.value_2, 'NA') AS value_2
    FROM employee_id e LEFT JOIN
         employee_role er
         ON er.id = e.id LEFT JOIN
         Role r
         ON er.role = r.role;
    
    

관련 자료

  • 이전 javascript - threejs - 장면에서 객체 추가 및 교체
  • 다음 shell - ZSH에서 디렉토리로 이동 (bash)