簡體   English   中英

PHP/MySQL - SELECT 和 SUM Distinct GROUP BY ColumnA WHERE columnB =? AND 列 C =?。 最好的方法是什么?

[英]PHP/MySQL - SELECT and SUM Distinct GROUP BY ColumnA WHERE columnB = ? AND Column C = ?. What is the best method for this?

考慮這張表:

+-------------+--------------+-----------+------------+----------------+--------------------+
| Chapter(INT)| Unit (INT)   | Item (INT)| WordNo(INT)| Word (VCHAR)   |PartofSpeech(VCHAR) |
+-------------+--------------+-----------+------------+----------------+--------------------+
| 4           | 1            | 1         | 1          | He             | pronoun            |
| 4           | 1            | 1         | 2          | sells          | verb               |
| 4           | 1            | 1         | 3          | Apples         | noun               |
| 4           | 1            | 2         | 1          | Those          | pronoun            |
| 4           | 1            | 2         | 2          | apples         | noun               |
| 4           | 1            | 2         | 3          | are            | verb               |
| 4           | 1            | 2         | 4          | red            | adjective          |
| 4           | 1            | 3         | 1          | Green          | adjective          |
| 4           | 1            | 3         | 2          | grapes         | noun               |
| 4           | 1            | 3         | 3          | are            | verb               |
| 4           | 1            | 3         | 4          | delicious      | adjective          |
| 4           | 1            | 4         | 1          | These          | pronoun            |
| 4           | 1            | 4         | 2          | apples         | noun               |
| 4           | 1            | 4         | 3          | are            | verb               |
| 4           | 1            | 4         | 4          | rotten         | adjective          |
+------------------------------------------------------------------------------+

現在,假設我希望能夠 select 'Item' 列WHERE Word = 'apple' AND PartofSpeech = 'adjective'每個 DISTINCT 組並將它們相加。 所以根據這個表,總和應該是 2,我應該返回第 2 項(“那些蘋果是紅色的。”)和第 4 項(“這些蘋果爛了。”)的句子。

我曾假設這個查詢會起作用,但似乎我需要在查詢之前進行 GROUP BY,對吧?

"SELECT SUM(itemnum) AS totalitems
FROM (SELECT COUNT(DISTINCT Item) AS itemnum 
FROM EnglishLevel1
WHERE Word = 'apples'
AND PartofSpeech = 'adjective'
GROUP BY Chapter, Unit, Item
) t"

我還研究了“IN”運算符以及將 AND 更改為 OR,但這並沒有得到預期的結果。 也許需要子查詢?

您可以按如下方式使用聚合:

SELECT Chapter, Unit, Item,
       GROUP_CONCAT(Word ORDER BY WordNo SEPARATOR ' ') AS sentence
FROM EnglishLevel1
GROUP BY Chapter, Unit, Item
HAVING SUM(Word = 'apple') > 0 AND SUM(PartofSpeech = 'adjective') > 0
ORDER BY Chapter, Unit, Item;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM