실력이 없어 하루종일 헤매다가 이렇게 문의드려봅니다. ㅜㅜ
두개의 테이블이 있는데 하나는 상품마스터 테이블이며 다른 하나는 실제 판매로그 테이블입니다.
상품마스터 테이블과 상품판매이력 테이블을 서로 outer join하여 페이징처리하려고 하는데...
아래와 같이...
첫페이지는 정상출력되는데... 하기와 같이 페이징을 하게되면
"하위 쿼리를 EXISTS로 정의하지 않은 경우에는 SELECT 목록에서 식을 하나만 지정할 수 있습니다" 라는 오류가 뜨네요..
고수님들의 도움을 요청합니다.ㅜㅜ
select top 32 a.ino,SUM(ISNULL(b.submit_price, 0)) as t_submit_price,b.submit_price from master_product AS a LEFT OUTER JOIN buydetail AS b ON a.p_code=b.p_code where a.del_status='1' AND a.ino NOT IN(SELECT TOP 32 a.ino,SUM(ISNULL(b.submit_price, 0)) as t_submit_price FROM master_product AS a LEFT OUTER JOIN buydetail AS b ON a.p_code=b.p_code where a.del_status='1' GROUP BY a.필드선언, b.필드선언 order by t_submit_price desc) GROUP BY a.필드선언, b.필드선언 order by t_submit_price desc
Comment 3
-
처리짱
2013.08.20 12:08
-
쓸만한게없네(윤선식)
2013.08.20 13:36
조건이 여러 개라면 JOIN으로 변경하셔야 합니다.
SELECT top 32 a.ino,
SUM(ISNULL(b.submit_price, 0)) AS t_submit_price,
b.submit_price
FROM master_product AS a
LEFT OUTER JOIN buydetail AS b ON a.p_code=b.p_code
WHERE a.del_status='1'
AND a.ino NOT IN
(SELECT TOP 32 a.ino,SUM(ISNULL(b.submit_price, 0)) AS t_submit_price
FROM master_product AS a
LEFT OUTER JOIN buydetail AS b ON a.p_code=b.p_code
WHERE a.del_status='1'
GROUP BY a.필드선언, b.필드선언
ORDER BY t_submit_price DESC)
GROUP BY a.필드선언,
b.필드선언
ORDER BY t_submit_price DESC에서
,SUM(ISNULL(b.submit_price, 0)) AS t_submit_price 이 부분을 빼고요
ORDER BY t_submit_price DESC 부분 대신 SUM(ISNULL(b.submit_price, 0)) 요렇게 바꾸셔야 할 듯.
-
seyo
2013.08.20 15:21
답변 주신 두분께 감사~
그리고 윤선식님께 더욱 감사~ㅜㅜ 해결되었습니다. 진심감사요~
쿼리가 보기 너무힘드네요 ㅠㅠ.
서브쿼리로 하려면은
where 컬럼 in (select 컬럼 from 테이블) 요런식으로 컬럼을 하나만 지정해야해요..