我正在开发一个包含 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 per a.id
,而你只是得到其中一个“随机”的。这似乎是一个基本正确性的问题。一旦你解决了这个问题,一个初始的SELECT COUNT(*) FROM
等等,然后肯定会给您以下查询将返回的行数,以便您可以相应地准备寻呼机。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)