-1

以下のコードを理解するのは難しいと思います。コードがどのように機能するかの論理的な流れを教えてください。

質問 - Customers テーブル内のすべての顧客による注文の合計数を表示するとします。注文は、適切な顧客 ID と共に Orders テーブルに格納されます。

手順 -

  1. 顧客テーブルから顧客のリストを取得します。
  2. 取得した顧客ごとに、Orders テーブル内の関連する注文の数を数えます。

ソリューション -

SELECT cust_name, cust_state, 
    (SELECT COUNT(*)
        FROM Orders
        WHERE Orders.cust_id = Customers.cust_id
    )
AS order_nos
FROM Customers
ORDER BY cust_name

括弧内の count(*) の部分がわかりません。それを理解するのを手伝ってください。

ありがとう。

4

2 に答える 2

0

行数を数えているだけです。この場合、それは顧客あたりの注文数です。代替のCOUNT(column_name)は、 column_nameがnullでない行の数を示します。

サブクエリなしで同等(代わりにグループを使用):

SELECT cust_name, cust_state, COUNT(orders.cust_id) order_nos
FROM Customers
    LEFT OUTER JOIN Orders on Customers.cust_id = Orders.cust_id
GROUP BY cust_name, cust_state
ORDER BY cust_name
于 2012-06-10T08:24:12.950 に答える
0

これは、相関サブクエリと呼ばれます。基本的に、顧客ごとに、その顧客の注文数を数えます。「魔法」はWHERE Orders.cust_id = Customers.cust_idサブクエリの句にあります。これは、この結果をメイン クエリに関連付ける部分です。「メインクエリからcust_idを取得し、cust_idがそのcust_idである注文の数を見つけてください」と言っています。

于 2012-06-10T18:14:53.010 に答える