计算JOIN表中的多行

时间:2014-02-14 15:13:57

标签: sql join count

父表:

adverts
- id

子表:

advertsitems
- id
- advertid
- price
- quantity

我正在尝试根据advertid计算数量,但不知怎的,我无法让它发挥作用。这就是我所拥有的:

  SELECT adverts.title AS adtitle, 
         adverts.id AS adid, 
         adverts.image AS image,
         description, 
         price, 
         shipping, 
         customs, 
         createdate
    FROM adverts 
         LEFT JOIN advertsitems 
                   ON adverts.id = advertsitems.advertid 
GROUP BY adid
ORDER BY adid DESC

我尝试添加COUNT(advertsitems.quantity),但它不算数。

1 个答案:

答案 0 :(得分:0)

您在没有聚合的情况下从price提取advertsitems字段。这从任意行中提取价格。以下查询将此替换为min()。您可能需要max()avg()

我假设select中除价格之外的所有列都来自adverts表。它们以适当的别名作为前缀。

最后,我认为你想要的是sum(quantity),而不是count(quantity)

  SELECT a.title AS adtitle, 
         a.id AS adid, 
         a.image AS image,
         a.description, 
         sum(ai.quantity) as quantity
         min(price) as LowestPrice, 
         a.shipping, 
         a.customs, 
         a.createdate
  FROM adverts a LEFT JOIN
       advertsitems ai
       ON a.id = ai.advertid 
  GROUP BY a.id
  ORDER BY a.id DESC