【发布时间】:2019-05-03 09:43:20
【问题描述】:
在我的网站上,人们可以发表文章并喜欢它们。
我想根据每个成员发表的文章数量和获得的点赞数来计算每个成员的级别。
我有一个工作正常的请求,但由于我猜是子查询,一次只针对一个成员。所以现在,我只能在他们的个人资料页面上这样做。
我想请求所有成员为我的主页做一个前 3 名。
您对我如何解决这个问题有任何想法吗?我在开发方面还很新,所以我想我的代码已经不是那么好了。感谢您的回答和建议。
// this code for one person, works fine
SELECT
(select (count(l.idArticle)) as nbLikes
from likes as l inner join articles as a on l.idArticle = a.idArticle
where a.pseudo ="' . $_SESSION['pseudo']. '")
+
( select count(pseudo) as nbArticle
from articles and pseudo ="' . $_SESSION['pseudo']. '")
as sumCount
// code i tried for all member but did not work, saying subqueries have more than one row
SELECT
(select (count(l.idArticle)/3) as nbLikes
from likes as l inner join articles as a on l.idArticle = a.idArticle
group by a.pseudo)
+
( select count(pseudo) as nbArticle
from articles
group by pseudo)
as sumCount
#1242 - 子查询返回多于 1 行
表结构(抱歉,每列的名称为法语): Table Article in first - and then table for like. They are quite simple I guess.
点赞表非常简单,人们只能点赞或删除点赞,不能不点赞。 表 Like 和 Article 之间的链接是使用 idArticle 建立的。 我也有会员桌,但这里没有用。
【问题讨论】:
-
你能分享你的表结构和一些示例数据吗?也许创造一个小提琴(sqlfiddle.com)
-
改为使用 LEFT JOIN。
-
我尝试了左连接而不是内连接,但它不起作用?也许我不明白你的建议?