0

私のデータベースは次のようになります。

Table - Products
products_id 
products_price 

Table - Products_to_Categories
categories_id
products_id 

Table - Products_Descriptions
products_name

Table - Categories_Descriptions
categories_name

他にもたくさんの列がありますが、これらは私が必要とするものです。

上記のすべての列を選択したいのですが、最終的に各カテゴリの平均製品価格になりたいです。

おそらくAVG()関数が含まれることはわかっていますが、さまざまなクエリを試しました(私は少し学習者です)。うまくいくものを見つけられるかどうか悩んでいます。1つのクエリでこれを行うことさえ可能ですか?現時点では頭を悩ませることができません。

どんな助けでも最もありがたいことに受け取られるでしょう。:(

4

3 に答える 3

1

これは、1つのカテゴリに対してそれを実行するクエリです。次に、各カテゴリのカテゴリIDを変更できます。

SELECT AVG(product_price) FROM Products WHERE products_id IN (SELECT products_id FROM Products_to_Categories WHERE categories_id = x)
于 2012-04-30T17:04:56.330 に答える
1

集計関数を使用する場合は、GROUPBY句を使用する必要があります。

AVG関数を使用したマニュアルの例を次に示します。http: //dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_avg

テーブルを結合する必要があるため、クエリは少し複雑になりますが、groupbyを使用する背後にある考え方は同じです。

興味がある場合は、GROUPBYに関する詳細情報を以下に示します http://dev.mysql.com/doc/refman/5.6/en/group-by-modifiers.html

于 2012-04-30T17:09:13.187 に答える
1

テーブルを結合してから、category_nameおよび/またはcategory_idでgroupbyします。Jrodによって上で強調表示されたリンクは、優れたリファレンスです。

SELECT AVG(p.product_price), c.category_name
FROM Products p
    INNER JOIN Products_to_Categories pc ON p.product_id = pc.product_id
    INNER JOIN Categories c on pc.category_id = c.category_id
GROUP BY c.category_name
于 2012-04-30T17:30:05.990 に答える