0

我尝试做的是,计算我在这个 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>

4

2 回答 2

3

您需要使用GROUP BY. 看起来您希望每个唯一的客户/客户地址都有一行。因此,假设这些被保留customers.name并且customers.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
于 2013-01-30T08:03:50.413 回答
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 进行分组,然后加入该查询以获取客户姓名和地址。假设上述选择对您有用,但我会为您自己留下进一步的改进。

于 2013-01-30T08:04:52.700 回答