2017-07-10 15 views
0

私はMySQLコマンドの初心者です。私はこのエラーを検索しましたが、その問題は私と同じではありません。私はそれが言うところのエラーを理解するのに苦労していますSELECT list is not in GROUP BY clause and contains nonaggregated column 'japorms.p.item_price' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_bySELECTリストはGROUP BY句にはありませんERROR MySQL

私はfunctionally dependentの意味も検索しましたが、まだ理解できませんでした。ここ

は私のクエリです:

SELECT 
    sum(od.item_qty) as item_qty, 
    p.item_name as item_name, 
    p.item_price as item_price, 
    od.size as size 
from order_details as od, productmaster as p 
where p.id = od.item_id 
group by p.item_name 

私は私のクエリからp.item_priceod.sizeを削除すると、それはp.item_nameを受け入れます。 p.item_namep.item_priceが同じテーブルにあるのはなぜですか?

+1

どのアイテムの価格とサイズを表示しますか?あなたの質問は、各項目の数量の合計が必要であることを意味します。それで、単一のサイズについて話すのは理にかなっていません。あなたは集約の観点から考える必要があります。 –

+0

https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-クエリ – Strawberry

+0

は、 'order_details from od、productmaster as p'を使って' CROSS JOIN'を適用したことにも注意してください。 –

答えて

1

は、あなたがして、グループで、集計関数ではない、すべての列を言及する必要があります:MAX、MINであるように、

この場合
SELECT 
    SUM(od.item_qty) AS item_qty, 
    p.item_name AS item_name, 
    p.item_price AS item_price, 
    od.size AS size 
FROM order_details AS od, 
JOIN productmaster AS p ON p.id = od.item_id 
GROUP BY p.item_name, p.item_price, od.size 

、SUM()などの機能があり、COUNTなど

(そして明示的な書面による参加に変更)

+0

ありがとう!それは私の問題を解決しました。これは、集約されていない列を照会する場合は、それらの列を関数ごとにグループに含める必要があるということですか? –

+0

はい、それらのすべて。この場合、サイズごとにグループ化しないとどうなるかを検討してください。それはすべての数量を合計します。しかし、どのサイズのものを見たいですか? L?またはXL?またはXXXL? –

+0

このクエリはカートのためのものです。各項目には独自のサイズがあります。重複した項目を除外したいだけでした。同じアイテムを複数回表示する代わりに、単一のアイテムを表示し、SUM()関数を使用します。私はまた同じ項目をフィルタリングする条件を追加する必要がありますが、サイズが異なります。しかし、私は今、とてもありがとうございました。 –

0

これを試すことができます。あなたは、GROUP BYを使用する場合は(...例えば。SUM、AVG、MIN、MAX、COUNT、)及びそのものが機能を集約している "によってグループ化" されている列(複数可)を指定してください

SELECT 
    p.item_name as item_name, 
    AVG(p.item_price) as item_price, 
    od.size as size, 
    SUM(od.item_qty) as item_qty 
from order_details as od 
INNER JOIN productmaster as p ON p.id=od.item_id 
group by p.item_name, od.size 
関連する問題