我在缩短此查询sql /pdo时遇到问题。
我需要的是从特定用户的不同表中获取不同的值,例如:
User1
Number of posts:23
Number of Comments: 2745
Number of Likes: 654 (given to another posts)
以下是查询:
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
我试过这样的东西,但没有成功...
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
吗?
发布于 2020-05-06 09:05:37
我想你只是想:
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
或某些数据库需要的类似内容)。
https://stackoverflow.com/questions/61625595
复制相似问题