我正在处理包含3个表的数据库:
我在php中进行这样的查询,以生成在特定日期提供特定产品类型最低价格的公司列表。
SELECT a.name AS company, c.id, MIN(c.price) AS apy FROM `companies` a JOIN `company_products` b ON b.company_id = a.id JOIN `product_prices` c ON c.product_id = b.id WHERE b.type = "%s" AND c.date = "%s" GROUP BY a.id ORDER BY c.price ASC LIMIT %d, %d
这为我获取了我需要的数据,但是为了在PHP中实现寻呼机,我需要知道总共有多少家公司提供该产品。LIMIT表示我只看到前几个…
我尝试将SELECT子句更改为SELECT COUNT(a.id)或SELECT COUNT(DISTINCT(a.id)),但这些似乎都不给我我想要的东西。我尝试在我的计数查询中删除GROUP BY和ORDER BY,但这也不起作用。有任何想法吗?
在我看来,您应该GROUP BY a.id, c.id-按组进行分组a.id仅意味着通常c.id每个s有几个s a.id,而您只是得到其中一个“随机的”。这似乎是基本正确性的问题。一旦您解决了该问题,则初始的SELECT COUNT(*) FROMetc等绝对应为您提供以下查询将返回的行数,因此您可以相应地准备您的寻呼机。
GROUP BY a.id, c.id
a.id
c.id
SELECT COUNT(*) FROM