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;
我正在尝试从一行中输出不同结果的数量,其中另外两个 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;