首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何缩短这条sql语句?(3个子查询)

如何缩短这条sql语句?(3个子查询)
EN

Stack Overflow用户
提问于 2020-05-06 09:03:45
回答 1查看 41关注 0票数 0

我在缩短此查询sql /pdo时遇到问题。

我需要的是从特定用户的不同表中获取不同的值,例如:

代码语言:javascript
运行
复制
User1
Number of posts:23
Number of Comments: 2745
Number of Likes:    654 (given to another posts)

以下是查询:

代码语言:javascript
运行
复制
SELECT 
    p.*,
    (SELECT COUNT(*) FROM comments WHERE id_commenter = :id_session) AS no_comments,
    (SELECT COUNT(*) FROM likes WHERE id_liker = :id_session) AS no_likes,
    (SELECT COUNT(*) FROM posts WHERE id_poster = :id_session) AS no_topics
FROM
    posts p
WHERE
    p.id_poster = :id_session

我试过这样的东西,但没有成功...

代码语言:javascript
运行
复制
SELECT 
    COUNT(p.id_post) no_posts,
    COUNT(c.id_comment) no_comments,
    COUNT(l.id_like) no_likes,    
FROM 
    users u  
LEFT JOIN 
    comments c on c.id_user = u.id_user
LEFT JOIN 
    posts p on p.id_user = u.id_user
LEFT JOIN 
    likes l on l.id_user = p.id_user
WHERE 
    id_user = "1" 

它没有按预期检索值,我如何缩短我的第一条SQL语句?我需要使用distinct吗?

EN

回答 1

Stack Overflow用户

发布于 2020-05-06 09:05:37

我想你只是想:

代码语言:javascript
运行
复制
SELECT (SELECT count(*) FROM comments WHERE id_commenter = :id_session) as no_comments,
       (SELECT count(*) FROM likes WHERE id_liker = :id_session) as no_likes,
       (SELECT count(*) FROM posts WHERE id_poster = :id_session ) as no_topics

没有理由使用SELECT子句(除非您需要FROM dual或某些数据库需要的类似内容)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61625595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档