【问题标题】:Counting SQL results aswell as outputting the result data统计 SQL 结果并输出结果数据
【发布时间】:2013-01-13 23:15:10
【问题描述】:

我尝试做的是,计算我在这条 SQL 语句中的行数,并希望将数据检索到 Repeater 中。这是ASP.NET / C#

SELECT COUNT(*) AS 'numbersOfOrdres' 
FROM customers 
INNER JOIN orders ON customers.customer_id = orders.order_customer_id

似乎不起作用,我会在中继器中不断收到错误 "Does not contain 'THEN MY FIELD NAME'

编辑: 中继器代码

<asp:Repeater ID="customerOrdersRepeater" runat="server">
<HeaderTemplate>
    <table>
    <tr>
        <td><b>Customer name</b></td><td><b>Customer adresse</b></td><td>Numbers of orders</td>
    </tr>
</HeaderTemplate>
<ItemTemplate>
    <tr>
        <td><%# Eval("customer_name") %></td><td><%# Eval("customer_adresse") %></td><td><%# Eval("numbersOfOrdres") %></td>
    </tr>
</ItemTemplate>
<FooterTemplate>
    </table>
</FooterTemplate>

【问题讨论】:

  • 以防万一。您的字段名称是否正确?客户地址
  • 是的,只是仔细检查:D
  • 您是否在 DB 上运行了您的脚本?它有效吗?你能提供你得到的完整错误吗?
  • 如果是 SQL Server,请尝试删除 'as'
  • System.Web.HttpException: DataBinding: 'System.Data.DataRowView' 不包含名为 'customer_name' 的属性。

标签: c# asp.net sql select count


【解决方案1】:

如果我理解你想要做什么,我认为你需要使用 group by。

这就是我想你想看到的

Customer 1, customer_1_address, 3
Customer 2, customer_2_address, 1
Customer 3, customer_3_address, 5

假设有 3 个客户,分别有 3、1 和 5 个订单。

如果是这样,group by 可能会得到你想要的,即

select 
  customer_name,
  customer_address,
  count(*)
from
  customers
join
  orders
on customers.cust_id = orders.cust_id
group by customer_name, customer_address

可能有更有效的方式来说明分组依据,即在 su 查询中对 cust_id 进行分组,然后加入该查询以获取客户姓名和地址。假设上述选择对您有用,但我会为您自己留下进一步的改进。

【讨论】:

  • 这也有效,但 Smirkin 刚才回答了同样的问题:D 谢谢你!
【解决方案2】:

您需要使用GROUP BY 汇总您的结果。看起来您希望每个唯一的客户/客户地址都有一行。因此,假设这些保存在 customers.namecustomers.adresse 您的查询将是

SELECT customers.name AS customer_name, customers.adresse AS customer_adresse, 
    COUNT(*) AS 'numbersOfOrdres' 
FROM customers 
INNER JOIN orders ON customers.customer_id = orders.order_customer_id
GROUP BY customers.name, customers.adresse

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-28
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多