0

我正在尝试通过子查询计算与每个书签相关的标签和评论的数量。但是,它只是计算所有标签和评论。

SELECT
    bookmarks.bookmark_id,
    bookmarks.user_id,
    DATE_FORMAT(bookmarks.creation, '%W %D of %M %Y, %H:%i') AS creation,
    DATE_FORMAT(bookmarks.modification, '%W %D of %M %Y, %H:%i') AS modification,
    bookmarks.url,
    bookmarks.title,
    bookmarks.snippet,
    bookmarks.status,
    (
        SELECT
            COUNT(tags.tag) AS tags
        FROM
            tags
        INNER JOIN
            bookmarks
        ON
            (tags.bookmark_id = bookmarks.bookmark_id)
        WHERE
            (tags.user_id = '1')
    ) AS tags,
    (
        SELECT
            COUNT(bookmarks_comments.comment) AS comments
        FROM
            bookmarks_comments
        INNER JOIN
            bookmarks
        ON
            (bookmarks_comments.bookmark_id = bookmarks.bookmark_id)
        WHERE
            (bookmarks_comments.user_id = '1')
    ) AS comments
FROM
    bookmarks
WHERE
    (bookmarks.user_id = '1')
GROUP BY bookmarks.bookmark_id

可能是时候迟到了。我不知道。但我无法弄清楚这一点。有任何想法吗?

4

1 回答 1

2

您的 subqquery 正在执行连接,因此它与外部查询不相关。这是您想要的第一个:

(
    SELECT
        COUNT(tags.tag) AS tags
    FROM
        tags
    where 
        (tags.bookmark_id = bookmarks.bookmark_id)
    and
        (tags.user_id = '1')
) AS tags,

请注意,我删除了join. 现在,当 SQL 看到bookmarks.bookmarks_id它时,它将转到bookmarks外部查询中的表。

你也有同样的问题comments

于 2013-04-26T21:51:01.847 回答