2012-05-03 17 views
2

MySqlのテーブルには、次のフィールドを持つ特定の注文の詳細が含まれています(ここに投稿する必要がない場合もあります) )。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は

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

を文句を言うこのサブクエリは、複数の製品イメージが同じ製品のためにそこにあるproduct_imageテーブルで維持製品の画像を取得し、私はいずれか一方のみを表示する必要があります。

私のサーバーのバージョンは5.1.48です。この状況を回避する別の方法はありますか?

答えて

1

MySQLはINサブクエリの制限をサポートしていません。

しかし、あなたができることは、ビューを作成し、代わりにそのビューを選択することです。

ビューにこれを行います。product_image制限FROM 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行しかありませんか?

関連する問題