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.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
于 2013-01-30T08:03:50.413 に答える
1

あなたが何をしようとしているのか理解できれば、groupbyを使用する必要があると思います。

これはあなたが見たいと思うものです

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

それぞれ3、1、5の注文で3人の顧客を想定しています。

もしそうなら、groupbyはあなたが望むものを手に入れるでしょう。

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 に答える