마농님 쿼리 도와주세요. 다대다 0 2 1,096

by 아이티대통령 [SQL Query] [2015.05.11 13:58:27]


인포믹스 이나 오라클로 알려주셔도 참고하겠습니다

도와주세요 ㅠㅠ

테이블 : 상품, 카테고리, 카테고리상품맵핑

관계:

상품  n : m 카테고리

상품 1:n 카테고리상품맵핑 n:1 카테고리

컬럼: 판매수량, 인기상품 =>상품테이블의 컬럼

조건:

카테고리별로 판매수량, 인기상품이 높은 1위 상품을 노출

상품이 중복될 경우 다음 순위 상품을 노출

카테고리는 평등하므로 중복된 카테고리중 랜덤하게 1위 2위 ...로 노출

즉 a 상품이 a1, a2 , a3 카테고리에 모두 1위를 차지했다면

a1 => a

a2 => b (2위상품)

a3 => c (2위상품)

2위도 중복이면 3위 노출, 중복되지 않은 최상의 등수 노출

by 신이만든짝퉁 [2015.05.11 16:00:42]

테이블별 데이터와 원하는 결과 데이터 예시를 각각 제시해 주세요.

답변에 필요한 정보가 전혀 나와있지 않아서 답변을 하고 싶어도 못하고 계신겁니다.


by 마농 [2015.05.11 16:18:09]

한방 SQL 보다는 PL/SQL 을 이용하시는게 좋을 듯 합니다.
제가 생각하는 로직은...
카테고리로 루프를 돌립니다.
1번 카테고리에 해당하는 상품중 1등을 뽑아 임시테이블에 저장합니다.
2번 카테고리에서는 임시테이블에 저장된 상품을 제외한 상품 중 1등을 뽑아 저장합니다.
이런식으로 카테고리 전체를 루프 돌리시면 임시테이블이 완성이 되고
이 임시테이블 내역을 리턴하면 되겠습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입