很长一段时间以来,我都无法弄清楚为什么COUNT(*)
返回了不正确的值。在逐步删除部分查询后,我终于意识到连接表是错误值背后的原因。
这是我正在使用的查询:
SELECT `profiles`.`logo` AS logo,
`companies`.`company_name`,
`companies`.`url_slug`,
count(*)
FROM (`companies`)
JOIN `users` ON `users`.`id` = `companies`.`user_id`
JOIN `categories` ON `categories`.`company_id` = `companies`.`id`
JOIN `products` ON `products`.`company_id` = `companies`.`id`
JOIN `profiles` ON `profiles`.`company_id` = `companies`.`id`
WHERE `users`.`last_login` IS NOT NULL
AND `categories`.`category_id` = '3'
AND `products`.`active` = 1
AND `products`.`xmp_1` = 1
AND `products`.`xmp_2` = 1
AND `profiles`.`field_a` = 1
GROUP BY `companies`.`id`
在我的 SQL 程序中运行它会返回 28 行,但该COUNT(*)
行会返回 1400 之类的东西。我不知道从哪里开始。我需要返回一个返回 28 而不是 1400 的列。
SQL Fiddle 示例数据:http ://sqlfiddle.com/#!2/97d2d/9