具有多个 JOINS 和 GROUP BY CLAUSE 的查询中的 COUNT

2024-02-06

我正在开发一个包含 3 个表的数据库:

  1. 公司名单
  2. 他们销售的产品表
  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.ids per a.id,而你只是得到其中一个“随机”的。这似乎是一个基本正确性的问题。一旦你解决了这个问题,一个初始的SELECT COUNT(*) FROM等等,然后肯定会给您以下查询将返回的行数,以便您可以相应地准备寻呼机。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有多个 JOINS 和 GROUP BY CLAUSE 的查询中的 COUNT 的相关文章

随机推荐