4

我正在尝试制作一个列表,在我的论坛上显示我的所有类别。显示类别名称、ID 以及计数,计算有多少线程附加到该类别。

它工作得很好,但是,它会打印两次结果。

这是 SQL

SELECT categories.category_name, threads.thread_category_id, COUNT(*) 
                        AS 'threadCount' FROM threads 
                        INNER JOIN categories ON categories.category_id = threads.thread_category_id
                        GROUP BY categories.category_name, threads.thread_category_id

这是结果 在此处输入图像描述

正如你所看到的,它会打印两次相同的东西,这是不应该的。

编辑:这是 ASP。

<asp:Repeater ID="categories" runat="server">
    <HeaderTemplate>
    <table id="kategorier" cellspacing="0">
        <tr>
            <td class="head">Name</td>
            <td class="head" style="width:70px">Number of Threads</td>
        </tr>
    </HeaderTemplate>
    <ItemTemplate>
        <tr>
            <td class="item"><a href="Kategori.aspx?id=<%# Eval("thread_category_id") %>"><%# Eval("category_name") %> - ID: <%# Eval("thread_category_id")%></a></td>
            <td class="item" style="text-align:right"><%# Eval("threadCount") %></td>
        </tr>
    </ItemTemplate>
    <FooterTemplate>
    </table>
    </FooterTemplate>
</asp:Repeater>
4

2 回答 2

3

如果您的 ASP 正确,基本上您有 2 个地方可以复制行:

1)SQL 错误(可能你必须使用 DISTINCT 运算符)

2)C#代码错误(可能你必须检查你的数据源)

请检查您的 SQL。并与我们分享您的 C# 代码。

用这个

SELECT distinct  category_name, thread_category_id, threadCount
FROM
( SELECT categories.category_name, threads.thread_category_id, COUNT(*) 
                        AS 'threadCount' FROM threads 
                        INNER JOIN categories ON categories.category_id = threads.thread_category_id
                        GROUP BY categories.category_name, threads.thread_category_id ) A
于 2013-03-06T13:07:14.920 回答
0

使用 Distinct .its 删除所有重复的行

SELECT DISTINCT(threads.thread_category_id), categories.category_name, COUNT(*) 
                        AS 'threadCount' FROM threads 
                        INNER JOIN categories ON categories.category_id = threads.thread_category_id
                        GROUP BY threads.thread_category_id
于 2013-03-06T13:04:34.980 回答