-1

さて、私はこのサイト、ここのメンバーが提案したいくつか、SQL の教科書などを熟読しました。問題: 顧客名、注文日、注文数、見積価格、請求額、Premiere Products から注文した商品の説明をリストします。このレポートは、注文日と顧客名で構成されています。テーブル:

SQL> desc customer
 Name
 ----------------------
 CUSTOMER_NUM
 CUSTOMER_NAME
 STREET
 CITY
 STATE
 ZIP
 BALANCE
 CREDIT_LIMIT
 REP_NUM

SQL> desc orders
 Name
 ----------------------
 ORDER_NUM
 ORDER_DATE
 CUSTOMER_NUM

SQL> desc order_line
 Name
 ----------------------
 ORDER_NUM
 PART_NUM
 NUM_ORDERED
 QUOTED_PRICE

SQL> desc part
 Name
 ----------------------
 PART_NUM
 DESCRIPT
 ON_HAND
 CLASS
 WAREHOUSE
 PRICE

クエリに使用しているものは次のとおりです。

SQL>  SELECT CUSTOMER.CUSTOMER_NAME, ORDERS.ORDER_DATE,
  2   ORDER_LINE.NUM_ORDERED, ORDER_LINE.QUOTED_PRICE,
  3   SUM(Num_Ordered*Quoted_Price) AS Amt_Billed,
  4   PART.DESCRIPT
  5   FROM customer
  6   INNER JOIN CUSTOMER INNER JOIN ORDERS ON
             CUSTOMER.CUSTOMER_NUM =ORDERS.CUSTOMER_NUM
  7   INNER JOIN ORDER_LINE ON ORDERS.ORDER_NUM = ORDER_LINE.ORDER_NUM
  8   Inner JOIN ORDER_LINE ON PART.PART_NUM = ORDER_LINE.PART_NUM;
 Inner JOIN ORDER_LINE ON PART.PART_NUM = ORDER_LINE.PART_NUM
                                                            *
ERROR at line 8:
ORA-00905: missing keyword

私はそれを数回試し、アクセステーブルを作成しましたが、そこにある SQL は基本的にここにあるものと同じです。私はオラクル11gを使用しています。

4

3 に答える 3

0

SQL をフォーマットすると、テーブル間の関係をたどるのに役立ちます。単純化されたインデントと、右側に結合された左側のテーブルと、ON 句がそれらの間の列関係を示していることに注目してください。

それが完了したら、選択、合計、グループ化、並べ替えなどのために残りの列を取得します

SELECT
      c.customer_name,
      o.order_date,
      ol.num_ordered,
      ol.quoted_price,
      ol.num_ordered * ol.quoted_price as amt_Billed,
      p.descript
   from
      customer c
         join orders o
            ON c.customer_num = o.customer_num
            join order_line ol
               ON o.order_num = ol.order_num
               join part p
                  ON ol.part_num = p.part_num
   order by
      o.order_date,
      c.customer_name

クエリは注文されたものの項目ごとの金額を表示しているため、「SUM()」は必要ありません。実際に注文された各部品を表示しているので、列を行ごとの合計金額として完全に乗算できます。

また、各テーブルの簡略化されたエイリアス名の参照と、各テーブル名の完全な長さを繰り返し記述することにも注意してください。

于 2013-10-04T02:22:32.173 に答える