2012-05-03 2 views
2

MySql 테이블에 다음 필드가있는 특정 주문에 대한 세부 정보가 포함 된 order_item 테이블이 있습니다 (여기에 게시 할 필요가없는 일부 항목)).MySQL에서 LIMIT 절을 사용하면 하위 쿼리가 작동하지 않습니다.

  1. 내가 베스트 셀러 제품을 계산해야
  2. 가격

qty_ordered prod_id ORDER_ID. 다음 SQL 문을 사용하고 있습니다.

SELECT o.prod_id, sum(o.qty_ordered) as qty_ordered, p.prod_img 
FROM order_item o, product_image p 
WHERE o.prod_id=p.prod_id AND 
p.prod_id IN(SELECT prod_id FROM product_image limit 1) AND 
order_id IN(SELECT order_id FROM order_table WHERE od_status='Completed') 
GROUP BY prod_id 
HAVING SUM(qty_ordered)>=5 
ORDER BY prod_id DESC 

위 쿼리는 베스트 셀러 제품을 계산합니다. 유일한 질문은 위의 문에서 언급 한 하위 쿼리

p.prod_id IN(SELECT prod_id FROM product_image limit 1) 

이 작동하지 않는다는 것입니다. MySQL은이 하위 쿼리는 동일한 제품에 대해 여러 제품 이미지가있는 product_image 테이블에 유지되는 제품 이미지를 검색하고 난 표시 중 하나만 필요

This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery' 

뿌려줍니다.

내 서버 버전은 5.1.48입니다. 이 상황을 해결할 다른 방법이 있습니까?

답변

1

맞습니다. MySQL은 IN 하위 쿼리의 제한을 지원하지 않습니다.

그러나 할 수있는 것은보기를 만들고 그보기를 대신 선택하는 것입니다. product_image 한계로부터 1

을 prod_id을 선택하고 다음 IN 절에서 전화 :

보기에이 확인이 가장 좋은 대답 경우 잘 모르겠어요

p.prod_id IN(SELECT prod_id FROM YOUR_VIEW_NAME_HERE) 

하지만, 작품 :)

2

귀하의 검색어를 보면 IN 절이 필요한 줄이 있습니까? (가) 이미 일어난 조인 때문에

WHERE o.prod_id=p.prod_id 

그것은 당신이 얘기 라인처럼 보인다는 중복 : 당신은 이미이 함께 참여하는거야? 또한 LIMIT 쿼리에는 WHERE 절이 없습니다. 이 테이블에 1 행만 있습니까?

관련 문제