PHP - 计算另外两列不同的不同行

PHP - Count distinct rows where two other columns are distinct

我正在尝试从一行中输出不同结果的数量,其中另外两个 tables 因素进入等式,但我不确定如何进行这项工作。这就是我所拥有的。我统计了一个词在数据库中出现的总次数

$total = "SELECT word, count(word) total FROM Table WHERE Word = 'Apples'";

total = 9。好的,很好。那很简单。

+-------------+--------------+--------------+--------------+
| BookID (INT)| chapter (INT)| page (INT)   | word (VCHAR) |
+-------------+--------------+--------------+--------------+
| 40          | 1            | 8            | Apples       | 
| 40          | 1            | 8            | Apples       | 
| 40          | 1            | 15           | Apples       | 
| 40          | 4            | 23           | Apples       |
| 50          | 3            | 15           | Apples       | 
| 50          | 6            | 15           | Apples       | 
| 51          | 13           | 1            | Apples       |
| 52          | 2            | 3            | Apples       |
| 60          | 8            | 1            | Apples       |
+-------------------------------------------+--------------+

现在,我需要一些帮助。我想找出该词在每本书每一章的不同页面上使用的次数。因此,根据上面的 table,我预计总数为 8。我接近这段代码,但找不到下一步。

$pages = "SELECT COUNT(DISTINCT page) AS num FROM Table WHERE word = 'Apples' GROUP BY BookID, chapter, page";

这给了我:

1
1
1
1
1
1
1
1

所以,我得到了正确的号码。 8 行。现在我只需要将它们相加并将它们输出为一个数字。 8. 我查看了 SUM,但它似乎不起作用(如果我弄错了,请告诉我应该如何包含它。)

您可以简单地将当前查询的总和作为子查询:

SELECT SUM(num) AS total
FROM
(
    SELECT COUNT(DISTINCT page) AS num
    FROM yourTable
    WHERE word = 'Apples'
    GROUP BY BookID, chapter, page
) t;