[英]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.