개발자
현재 통계 쿼리를 작성하고 있는데, 특정 테이블의 데이터에 따라서 쿼리 결과의 컬럼이 동적으로 변했으면 좋겠습니다! 예를 들면, 학생별로 성적을 뽑는 쿼리를 작성한다고 해보겠습니다. - 원하는 쿼리 결과 student_id | student_name | 국어 | 영어 | 수학 | --------------------------------------------------- 1 | 홍길동 | 60 | 50 | 40 | 이런식으로 결과가 나왔으면 좋겠습니다. - 과목 테이블 subject_id | subject_name | ----------------------------- 1 | 국어 | 2 | 영어 | 3 | 수학 | 이러한 과목 테이블이 하나 있고, 여기에 만약 '한국사' 과목 하나를 추가하게 되면 위의 쿼리 결과에 한국사 컬럼이 생기게 되는 것입니다. - 학생 성적 테이블 student_id | subject_id | score | ----------------------------------- 1 | 1 | 60 | 1 | 2 | 50 | 1 | 3 | 40 | 학생과 과목, 과목당 점수 정보가 있는 테이블입니다. - 학생 정보 테이블 student_id | student_name | ...생략 ------------------------------------- 1 | 홍길동 | 학생 정보 테이블입니다. pivot을 사용하려고 했지만, 결국 as 부분에 컬럼명을 명시해 줘야 하더라구요. 이해가 잘 되실지는 모르겠지만.. 도와주세요!!
답변 2
원하는 답변이 아닐 것 같아서, 무시하셔도 되겠습니다. 제 경우에는, 이런 경우 애플리케이션 코드에서 취합합니다. 쿼리로는 여러 row로 받아온 데이터를 (백엔드) 애플리케이션 레이어에서 하나의 엔트리로 만들어 냅니다. 꼭 쿼리만으로 모든 걸 해결해야 하는 건 아니니까요. 아니면, PostgreSQL에는 JSON 컬럼 타입이 있기 때문에, 학생별 (과목, 점수)+ 여러 건을 하나의 컬럼에 넣는 방법도 고려해 보겠습니다.
진라
작성자
리액트 개발자 • 2023년 10월 25일
헉 아닙니다! 저도 계속 찾아봤는데, 쿼리로 해결하기 보다는 백엔드 애플리케이션에서 처리하는게 더 맞을 것 같다는 생각이 들었어요 ㅎㅎ JSON 타입도 알아볼게요 감사해요
2년차 백엔드 개발자입니다! 원하시는 형태로 가져오려면 과목과 성적 테이블을 여러번 조인하는 형태로 가능은 하다고 생각됩니다. 과목이 국어인 아이디로 한 번, 수학인 아이디로 한 번... 의 형식이죠. 이와같이 쿼리를 작성하면 하나의 row에 계속 이어 붙이기때문에 구현자체는 가능해 보입니다. 다만 조인이라는 연산이 많을 수록 당연히 속도가 느려지기 때문에 이전 답변처럼 jsonb형식의 컬럼을 이용하거나 백엔드 로직에서 처리함이 효과적이지 않을까 하는 의견입니다!
진라
작성자
리액트 개발자 • 2023년 10월 25일
그런 방법도 있겠군요! 💡기본 조인이 7이라서 조금 고려를 해봐야겠어용 ㅎㅎ 의견 감사합니다!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!