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