일단 DB서버는 mssql 2008 R2 이구요.
요구사항이 아래와 같습니다.
상품 정렬 순서를
1. 전체를 최신 순서대로 3개만 먼저 보여줌
2. 관심 상품을 최신 순서대로 3개 랜덤(1번에서 안 보여진)
3. 관심 shop의 상품 중에 관심 카테고리에 있는 제품 최신 순서대로 3개 랜덤 (1~2번에서 안 보여진)
4. 관심 shop의 상품을 최신 순서대로 3개 랜덤(1~3번에서 안 보여진)
5. 관심 카테고리의 상품을 최신 순서대로 3개 랜덤(1~4번에서 안 보여진)
6. 전체를 최신 순서대로 1번에 이어 다시 끝까지 (1~5번에서 안 보여진)
이게 요구사항인데
사실 각 항목들에 있는 "3개만" 이라는 조건이 없을 경우에 대해서는 쿼리를 쉽게 짤수 있었습니다.
(물론 4번과 5번의 "최신 순서대로 3개 랜덤" 이라는 요청은...애초에 말이 안맞다고 생각하기 때문에 무시하구요.)
order by 1 desc, 2 desc, 3 desc....이런식으로 쭉 나열하는식으로 해결할 수 있었습니다만..
재수정 요구사항에는 저렇게 각 항목별로 "3개만" 이라는 단서가 붙어있더라구요.
저런 조건이 붙으니까 의외로 해결 쿼리가 잘 안떠오르네요.
mysql과는 다르게 mssql에는 order by limit 였나..아무튼 그 limit가 없어서요.
이런 요구사항일 경우 대략적으로 어떤걸 써야할지...
디테일한 답변이라면 물론 더욱 감사하겠지만, 대략적인 힌트만이라도 절실하네요.
TOP 쓰시고
각 요구사항에 맞게 쿼리 짠다음 UNION 하시면 될거 같습니다.