php - 用逗号分隔具有相同行数的值

标签 php mysql sql laravel

数据库结构

项目:id, name

用户:id, username

user_items:id, user_id, item_id

我目前在 user_items 上有一个 count(),它显示拥有最多项目的用户:

john: 13
bill: 9
lily: 9
kent: 9
seth: 8
vick: 8
anna: 7

但我想以这种方式显示它:

13: john
 9: bill, lily, kent
 8: seth, vick
 7: anna

如何在 blade 中使用 laravel 的查询系统来实现这一点?

最佳答案

不确定 Laravel,但这是纯 MySQL 版本:

SELECT itemCount, GROUP_CONCAT(username)
FROM
(
   SELECT tblU.user_name, COUNT([DISTINCT] tblUI.item_id) AS itemCount
   FROM users AS tblU 
   INNER JOIN user_items AS tblUI ON tblU.id = tblUI.user_id
   GROUP BY tblU.user_name
) AS uic
GROUP BY itemCount

注意,DISTINCT 是可选的,因此是方括号。此外,如果您希望用户没有任何项目,您可以将 JOIN 设为 LEFT JOIN。

关于php - 用逗号分隔具有相同行数的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31792772/

相关文章:

PHP CURL(7.48.0) DNS解析在/etc/hosts

sql - 我如何总结一组中最早和最多的记录?

mysql - 如何限制 JOIN?

mysql - 有什么方法可以使这些 SQL 查询更快?

php - Vim - 在启用语法突出显示的大型 PHP 文件上更改为正常模式很慢

php - url 中的未知字符 %252B

php - 为什么 ...$args 正在向子数组添加值? PHP

mysql - 在 mysql 表中查找可用的 IP 范围

mysql - 使用锁定/解锁更改表

mysql - SQL: N-N Select * from table1 并检测是否与特定用户 ID 的另一个存在关系