4

私の英語を失礼しますが、誰もフランス語で答えることができません;-)

私はこのリクエストを行っています:

SELECT AVG(tyd.price) AS avg_price, COUNT(tyd.id_product) AS cnt_id_p, 
       catalog.id_marchand, catalog.id_product, catalog.price AS c_price,
       catalog.img_src, tyd.login AS tyd_l
  FROM catalog 
 INNER JOIN tyd ON catalog.id_marchand = tyd.id_marchand 
               AND catalog.id_product = tyd.id_product
 WHERE tyd.login = "user1@tyd.fr"
   AND tyd.step = "0"
 GROUP BY catalog.id_product, catalog.id_marchand

しかしもちろん、AVG&COUNT関数は機能しません。これは、私の条件では1行しか取得できないためです。

私がやりたいのは、まだ私のユニークなラインを取得することですが、AVGとCOUNT関数を機能させます。私は2つのクエリでそれを行うことができますが、1つを実行したいと思います。

あなたが私を助けてくれることを願っています。

ありがとう。

PS:私は答え3に別の問題を入れました。私は怒っています!

4

3 に答える 3

0

申し訳ありませんが、他のテーブルに参加する場合と同じリクエストを使用します。

    SELECT AVG(tyd.price) AS avg_price, COUNT(tyd.id_product) AS cnt, tyd.id_marchand, tyd.id_product, catalog.price AS c_price, tyd.price AS t_price, tyd.amount AS t_am, pro_tyd.amount AS p_am, pro_tyd.price AS p_price, catalog.img_src,  tyd.step, tyd.login AS tyd_l
    FROM catalog 
    INNER JOIN tyd
    ON catalog.id_marchand = tyd.id_marchand 
    AND catalog.id_product =   tyd.id_product
    AND tyd.step = "1" 
    INNER JOIN pro_tyd 
    ON tyd.id_marchand = pro_tyd.id_marchand 
    AND tyd.id_product = pro_tyd.id_product
    GROUP BY catalog.id_product, catalog.id_marchand
    HAVING tyd.login = "user1@tyd.fr"

また、下位IDであるtyd.login="user3@tyd.fr"の場合にのみ機能します。user1またはuser2では機能しません...理由がわかりません...!

これが表です:

id / id_marchand /id_product/ログイン/価格/金額/遅延/ステップ/時間

29/1/1 / user3@tyd.fr /344/1/0/1/ 1343297500

120/1/1 /user2@tyd.fr / 54/1 / 0/1 / 1343297504

109/1/1 / user10@tyd.fr / 34/1 / 0/1 / 1343298598

tyd.login = "user3@tyd.fr"の場合、完全に機能します。user1またはuser2の場合、0行になりました。

于 2012-07-31T14:27:31.930 に答える
0

試してみてください

SELECT 
    AVG(tyd.price) AS avg_price, COUNT(tyd.id_product) AS cnt_id_p,
    catalog.id_marchand, catalog.id_product, catalog.price AS c_price, 
    catalog.img_src, tyd.login AS tyd_l
FROM catalog 
INNER JOIN tyd ON catalog.id_marchand = tyd.id_marchand 
              AND catalog.id_product =   tyd.id_product
              AND tyd.step = "0" 
GROUP BY catalog.id_product, catalog.id_marchand
HAVING tyd.login = "user1@tyd.fr"
于 2012-07-31T12:50:11.650 に答える
0

集計関数の一部ではないすべての列を GROUP BY 句に含める必要があります。

SELECT AVG(tyd.price) AS avg_price, COUNT(tyd.id_product) AS cnt_id_p,  
       catalog.id_marchand, catalog.id_product, catalog.price AS c_price, 
       catalog.img_src, tyd.login AS tyd_l 
  FROM catalog  
 INNER JOIN tyd ON catalog.id_marchand = tyd.id_marchand  
               AND catalog.id_product = tyd.id_product 
 WHERE tyd.login = "user1@tyd.fr" 
   AND tyd.step = "0" 
 GROUP BY catalog.id_marchand, catalog.id_product, catalog.price AS c_price, 
       catalog.img_src, tyd.login 
于 2012-07-31T13:06:26.947 に答える