0

割り当てられたテーブルスペース tbspUser1 で 4 つのテーブルを結合して、1 つのテーブルを作成しようとしています。

次のステートメントを使用しました。

CREATE TABLE SingleTable AS(
SELECT customer.c_id AS Customer_ID, 
customer.c_uname AS CUSTOMER_UName, 
ORDERS.o_id AS Order_ID, 
ORDER_LINE.ol_i_id As Order_Item_ID, 
ITEM.I_TITLE AS Item_Title
FROM customer INNER JOIN orders ON customer.C_ID=orders.O_C_ID
INNER JOIN order_line ON orders.o_id=order_line.ol_o_id
INNER JOIN item ON order_line.ol_i_id=item.i_id) TABLESPACE tbspUser1;

エラーが発生しました:

Error starting at line 1 in command:
CREATE TABLE SingleTable AS(
SELECT customer.c_id AS Customer_ID, 
customer.c_uname AS CUSTOMER_UName, 
ORDERS.o_id AS Order_ID, 
ORDER_LINE.ol_i_id As Order_Item_ID, 
ITEM.I_TITLE AS Item_Title
FROM customer INNER JOIN orders ON customer.C_ID=orders.O_C_ID
INNER JOIN order_line ON orders.o_id=order_line.ol_o_id
INNER JOIN item ON order_line.ol_i_id=item.i_id) TABLESPACE tbspUser1
Error at Command Line:9 Column:50
Error report:
SQL Error: ORA-00933: SQL command not properly ended
00933. 00000 -  "SQL command not properly ended"
*Cause:    
*Action:

私はコードの何が問題なのかをデバッグしてチェックしており、選択ステートメントを単独で実行しました。

SELECT customer.c_id AS Customer_ID, 
customer.c_uname AS CUSTOMER_UName, 
ORDERS.o_id AS Order_ID, 
ORDER_LINE.ol_i_id As Order_Item_ID, 
ITEM.I_TITLE AS Item_Title
FROM customer INNER JOIN orders ON customer.C_ID=orders.O_C_ID
INNER JOIN order_line ON orders.o_id=order_line.ol_o_id
INNER JOIN item ON order_line.ol_i_id=item.i_id;

次のフィールドを持つレコードをエラーなしで返しました。

CUSTOMER_ID CUSTOMER_UNAME         ORDER_ID ORDER_ITEM_ID ITEM_TITLE                                                 
----------- -------------------- ---------- ------------- ------------------------------------------------------------

割り当てられたテーブルスペースステートメントで4つのテーブルを結合して単一のテーブルを作成する際の何が問題なのか、誰かが私を案内してくれれば幸いです..

ありがとう!

4

1 に答える 1

0

結合とは関係ありません。TABLESPACEエラー メッセージは、クエリの一部ではなく、キーワードの開始である行 9 列 50 を指しています。あなたのTABLESPACE句は間違った場所にあります:

CREATE TABLE SingleTable
TABLESPACE tbspUser1
AS
SELECT customer.c_id AS Customer_ID, 
customer.c_uname AS CUSTOMER_UName, 
ORDERS.o_id AS Order_ID, 
ORDER_LINE.ol_i_id As Order_Item_ID, 
ITEM.I_TITLE AS Item_Title
FROM customer INNER JOIN orders ON customer.C_ID=orders.O_C_ID
INNER JOIN order_line ON orders.o_id=order_line.ol_o_id
INNER JOIN item ON order_line.ol_i_id=item.i_id;

ドキュメントcreate tableは非常に複雑ですが、リレーショナル テーブルのセクションでは、句を含むセグメント属性を含む物理プロパティが、句を含むテーブル プロパティの前に来ることを示しています。これは、ステートメントの最後の部分です。TABLESPACEAS subquery

ただし、他の 4 つのデータを含む 1 つのテーブルを作成するのは奇妙に思えます。代わりにビューまたはマテリアライズド ビューが必要なように聞こえます。そうしないと、元の 4 つのテーブルへの変更が に反映されませんsingletable

于 2013-08-05T15:07:17.743 に答える