计算SQL结果以及输出结果数据

时间:2013-01-30 07:44:37

标签: c# asp.net sql select count

我尝试做的是,计算此SQL语句中的行,以及想要将数据检索到Repeater。这是ASP.NET / C#

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

似乎不起作用,我将继续在Repeater中收到错误"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>

2 个答案:

答案 0 :(得分:3)

您需要使用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

答案 1 :(得分:1)

如果我理解你要做什么,我认为你需要使用一个小组。

这是我想你想看到的

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

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

如果是这样,一个小组将可能得到你想要的,即

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进行分组,然后加入该查询以获取客户名称和地址。假设上面的选择适合你,虽然我会给自己留下进一步的改进。