【发布时间】:2021-11-06 02:53:53
【问题描述】:
我有 5 张桌子:
-
表
usuarios:| id_usuario | nombre_usuario | | ---------- | --------------- | | 1 | jose perez | | 2 | manolo garcia | | 3 | antonio sanchez | -
表
productos:| id_producto | nombre_producto | | ----------- | ----------------- | | 1 | camiseta espinete | | 2 | camiseta batman | | 3 | camiseta simpson | -
表
favoritos:| id_favoritos | id_producto | id_usuario | | ------------ | ----------- | ---------- | | 1 | 3 | 2 | | 2 | 1 | 3 | | 3 | 2 | 1 | -
表
chistes:| id_chiste | titulo_chiste | | --------- | ---------------- | | 1 | chiste arevalo | | 2 | chiste jose mota | | 3 | chiste gatos | -
表
likes:| id_like | id_chiste | id_usuario | | ------- | --------- | ---- ---- | | 1 | 3 | 2 | | 2 | 1 | 3 | | 3 | 2 | 1 |
usuario 可以将productos 添加为favoritos 和likes chistes。我有兴趣了解同一查询中每个usuario 的favoritos 和likes 的总数,并将usuarios 的列表按一个或另一个数量排序(favoritos 的数量或likes 的数量,取决于选择的内容)。我知道如何分开做,也就是在两个不同的查询中:
- 列出
usuarios和favoritos的总数我使用:
SELECT usuarios.*,
count(favoritos.id_usuario) AS numFavoritos
FROM usuarios
LEFT JOIN favoritos
ON usuarios.id_usuario = favoritos.id_usuario
GROUP BY usuarios.id_usuario
ORDER BY numFavoritos DESC
- 并列出我使用的总点赞数的用户:
SELECT usuarios.*,
count(likes.id_usuario) AS numLikes
FROM usuarios
LEFT JOIN likes
ON usuarios.id_usuario = likes.id_usuario
GROUP BY usuarios.id_usuario
ORDER BY numLikes DESC
我一直在尝试在单个数据库查询中执行此操作,但我做不到。 如果有人可以提供帮助,我将不胜感激,向大家问好!
【问题讨论】:
标签: mysql sql database count left-join