我需要創建一個 SQL 命令。從帶有評論的表中,我將獲得評論 ID,然后使用此 ID,我需要獲得具有相同評論 ID 和用戶名的反應計數。
因此,例如,我有這 2 個表:
評論:
| ID | Comm_text |
|---|---|
| 1 | 示例文本 |
| 2 | 另一個例子 |
和反應:
| ID | comm_id | 用戶 | 等等.. |
|---|---|---|---|
| 1 | 1 | 彼得 | 其他 |
| 2 | 1 | 約翰 | 結腸 |
| 3 | 1 | 狗 | 因為 |
| 4 | 2 | 貓 | 為什么不 |
我需要得到這個:
| ID | Comm_text | 反應計數 | 用戶 |
|---|---|---|---|
| 1 | 示例文本 | 3 | 彼得、約翰、狗 |
| 2 | 另一個例子 | 1 | 貓 |
我試過這個:
SELECT k.id, k.comm, COUNT(r.id) as reactions, r.usr
FROM `comms` k
INNER JOIN `reactions` r ON r.id=k.id
它只是一行,有一條評論和反應表中所有行的計數。
謝謝。
uj5u.com熱心網友回復:
試試這個產生相同輸出的查詢:
select comments.id as ID , comments.Comm_text as Comm_text ,
(select count(id) from Reactions where comm_id = comments.id) as Reactions_Count ,
(select coalesce(GROUP_CONCAT(usr ORDER BY usr DESC) , '') from Reactions WHERE comm_id = comments.id) as Users
from comments group by comments.id
您應該使用group by對評論進行分組并只有一行,然后根據組的每一行使用查詢來計算和收集資料。
如果輸出為空,則GROUP_CONCAT附加輸出并將輸出,設定coalesce為給定的字串。
閱讀更多關于:
- 通過...分組
- GROUP_CONCAT
- 合并
- 子查詢
uj5u.com熱心網友回復:
根據您在示例中設定的名稱,這將起作用。只需修復資料庫結構的表名。
SELECT `Comments`.`ID`, `Comments`.`Comm_text`, count(`Reactions`.`comm_id`) as react, `Reactions`.`usr`
FROM `Comments`
INNER JOIN `Reactions`
ON `Comments`.`ID`=`Reactions`.`comm_id`
GROUP BY `Reactions`.`comm_id`
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/424973.html
上一篇:SQL或函式
下一篇:連接組中的不同值
