Запрос удваивает количество на счет для определенных результатов - PullRequest
0 голосов
/ 29 января 2019

У меня есть этот запрос, в котором я пытаюсь отобразить результаты и подсчитать количество ответов по теме.Результат иногда удваивает количество ответов.Вместо 10 будет отображаться 20. Есть ли что-то, чего мне не хватает в моем запросе, который удвоил бы его?

SELECT      
        count(replies.reply_topic) as replyCount,
        topics.topic_id,
        topics.topic_subject,
        topics.topic_date,
        topics.topic_cat,
        topics.topic_picture,
        topics.topic_creator,
        topics.topic_likes,
        users.user_id,
        users.username,
        profile.profile_id,
        profile.profile_pictureMain,
        profile.profile_users,
        savelink.saveLink_id,
        savelink.saveUser_id,
        savelink.link_id,
        votelikes.voteLikes_user,
        votelikes.voteLikes_topic,
        votelikes.voteLikes_hot,
        votelikes.voteLikes_cold
        FROM
            topics
        LEFT JOIN
            replies
        ON
            replies.reply_topic = topics.topic_id
        LEFT JOIN
            users
        ON
            topics.topic_creator = users.user_id
        LEFT JOIN
            profile
        ON
            profile.profile_users = users.user_id
        LEFT JOIN
            savelink
        ON
            savelink.link_id = topics.topic_id
        LEFT JOIN
            votelikes
        ON
            votelikes.voteLikes_topic = topics.topic_id
        GROUP BY
            topics.topic_id
        ORDER BY
            topics.topic_date DESC 
        LIMIT ?, ?

Итак, вот моя таблица ответов: где reply_topic - это идентификатор темы, котораяответили тоже, и он отображает вдвое больше.

reply_id   reply_content    reply_topic    reply_by

1           stuff            45             34
2           more stuff       76             21
3           more             45             75

, отображая ответы примерно так:

<i class="fa fa-comments"></i> '.$row['replyCount'].' Comments</a>

и вместо отображения (2) результатов для reply_topic 45 отображает (4)) и т. д.

1 Ответ

0 голосов
/ 29 января 2019

Вы можете использовать count(distinct replies.reply_topic)

SELECT      
        count(distinct replies.reply_topic) as replyCount,
        topics.topic_id,
        topics.topic_subject,
        topics.topic_date,
        topics.topic_cat,
        topics.topic_picture,
        topics.topic_creator,
        topics.topic_likes,
        users.user_id,
        users.username,
        profile.profile_id,
        profile.profile_pictureMain,
        profile.profile_users,
        savelink.saveLink_id,
        savelink.saveUser_id,
        savelink.link_id,
        votelikes.voteLikes_user,
        votelikes.voteLikes_topic,
        votelikes.voteLikes_hot,
        votelikes.voteLikes_cold
        FROM
            topics
        LEFT JOIN
            replies
        ON
            replies.reply_topic = topics.topic_id
        LEFT JOIN
            users
        ON
            topics.topic_creator = users.user_id
        LEFT JOIN
            profile
        ON
            profile.profile_users = users.user_id
        LEFT JOIN
            savelink
        ON
            savelink.link_id = topics.topic_id
        LEFT JOIN
            votelikes
        ON
            votelikes.voteLikes_topic = topics.topic_id
        GROUP BY
            topics.topic_id
        ORDER BY
            topics.topic_date DESC 
        LIMIT ?, ?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...