2017-03-29 6 views
-5

私はTucsonから顧客が購入した製品の平均価格を表示しようとしていますが、このクエリはTusconから注文した顧客が2人いてもnullです。エラー1064 - ステートメント内

select AVG(product_price) from product where product_id in 
(select product_id from orderline where order_id in 
(select order_id from ordertable where cust_id in 
(Select cust_id from customer where city = 'Tuscon'))) 
+1

でなければなりません。投票を終了する。 – bernie

+1

更新された質問(クエリでnullを取得することについて)は、データの問題のように聞こえます。データを見ることなく、誰でも手助けすることは非常に困難です。クエリ自体が正しく表示されるようになりました。 –

答えて

0

fom認識キーワードではありません。 MySQLパーサはこれで何をするべきかわからないので、 "無効な構文"に関するエラーを投げます。


ネストされたINサブクエリーの代わりにジョイン操作を使用することを検討してください。当社が保証されている場合:

  • のproduct_idが
  • ORDER_IDが
  • CUST_IDは、顧客テーブル内で一意であるordertableテーブル内で一意である製品テーブル内で一意である

その後、我々は同等の結果セットを取得することができ、注文された別個の製品の平均価格...

SELECT AVG(p.product_price) 
    FROM (SELECT l.product_id 
      FROM orderline l 
      JOIN ordertable o 
      ON o.order_id = l.order_id 
      JOIN customer c 
      ON c.cust_id = o.cust_id 
      WHERE c.city = 'Tuscon' 
      GROUP BY l.product_id 
     ) q 
    JOIN product p 
    ON p.product_id = l.product_id 

あなたがいる

SELECT AVG(p.product_price) 
    FROM product p 
    JOIN orderline l 
    ON l.product_id = p.product_id 
    JOIN ordertable o 
    ON o.order_id = l.order_id 
    JOIN customer c 
    ON c.cust_id = o.cust_id 
WHERE c.city = 'Tuscon' 
0

:注文したすべての製品の帽子「平均価格」(別の結果は、平均的には、アカウントに製品が命じられた回数を取って...その後、私たちはこのようなクエリを使用することができますfomの代わりに、クエリでfrom使用:select order_id fom ordertable where cust_id in

する。これは、あなたが `fom`は` from`ではないことに注意しましょうselect order_id from ordertable where cust_id in