带有两个连接表的 MySQL 查询、COUNT 和 SUM

标签 mysql count sum

我在 MySQL 查询方面需要一些帮助。

我有两个表,一个表是带有 is_homepage (bool) 标志的 backlinks 列表。第二个表是所有 backlinksdomains 列表,一个是 link_found (bool) 标志,和一个 url_count 列,它是 backlinks 表中与每个域关联的行数。

请注意,domain_id 列是域表 id 列的外键。下面是一些示例数据。

反向链接

id    domain_id    is_homepage    page_href
1     1            1              http://ablog.wordpress.com/
2     1            0              http://ablog.wordpress.com/contact/
3     1            0              http://ablog.wordpress.com/archives/
4     2            1              http://www.somewhere.org/
5     2            0              http://www.somewhere.org/page=3
6     3            1              http://www.great-fun-site.com/
7     3            0              http://www.great-fun-site.com/index.html
8     4            0              http://red.blgspot.com/page=7
9     4            0              http://blue.blgspot.com/page=9

id    url_count    link_found    domain_name
1     3            1             wordpress.com
2     2            0             somewhere.org
3     2            1             great-fun-site.com
4     2            1             blgspot.com

我希望从上述数据中获得的结果是:count = 2,total = 5

我正在尝试从域表中获取行数 (count),然后从域表中获取 url_count 的总和(总计),其中 link_found 为 1并且反向链接表中的链接之一 is_homepage 为 1。

这是我正在尝试处理的查询。

SELECT SUM(1) AS count, SUM(`url_count`) total
FROM `domains` AS domain 
LEFT JOIN `backlinks` AS link ON link.domain_id = domain.id 
WHERE domain.id IN (
        SELECT DISTINCT(bl.domain_id)
        FROM `backlinks` AS bl
        WHERE bl.tablekey_id = 11
        AND bl.is_homepage = 1
)
AND domain.link_found = 1
AND link.is_homepage = 1
GROUP BY `domain`.`id`

此查询的问题在于它为 domains 表中的每个条目返回一行。我想我可能还需要一个子查询来将返回的结果相加,但我不确定这是否正确。有没有人看到我做错了什么?谢谢!


编辑:

我遇到的问题是,如果反向链接表中有多个主页,那么它会被计算多次。我只需要计算每个域一次。

最佳答案

好吧,您不必进行分组依据,因为您没有选择聚合字段以外的任何内容。我不是 mysql 专家,但这应该可行:

SELECT count(d.id) as count, sum(d.url_count) as total from domains as d
inner join backlinks as b 
on b.domain_id = d.id 
 Where d.Link_found = 1  and b. is_homepage = 1

关于带有两个连接表的 MySQL 查询、COUNT 和 SUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16281892/

相关文章:

Mysql带条件计数

python - Python 中的 Sigma 表示法

mysql - MySQL 和 Access 的更新问题

mysql - Symfony2 + Doctrine 选择性关系形式

mysql - MySQL/PHP从表时间戳中找出访问者的频率

mysql - 获取mysql中所有输出的单个值和总和

mysql - 如何创建合并重复主键的 SELECT

mysql - SQL-使用条件从表(LEFT JOIN)中获取计数

mysql - Oracle 数据库 - count(0) 的运行速度是否比 rownum < 500 快

mysql - 同一列上的多个计数与 Where like - MySQL