原谅我的英语,但没有人能用法语回答; - )
我正在做这个请求:
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函数不起作用,因为我的条件只有一行。
我想做的仍然是获得我的独特路线,但AVG和COUNT功能正常工作。我可以用两个查询来做,但我更喜欢做一个。
我希望你能帮助我。
感谢。
P.S:我在答案3中提出了另一个问题。我生气了!答案 0 :(得分: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"
答案 1 :(得分: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
答案 2 :(得分: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"
它只适用于tyd.login =“user3@tyd.fr”,这是较低的ID。不适用于user1或user2 ......我只是无法理解为什么......!
这是表格:
id / id_marchand / id_product / login / price / amount / delay / step / time
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
当Hyding tyd.login =“user3@tyd.fr”时它完美无缺。当user1或user2得到0行时。