-1

データベースには、stockitem、supplier、city の 3 つのテーブルがあります。

stkid在庫 ID ( )、在庫名 ( stkname)、および在庫 ID のサプライヤーの相対都市名 ( にリンク)を選択する SQL クエリを実行する必要がありますsuppid

これを行うには、stockitem テーブル (外部キー) とsupplier テーブル (主キー) の 2 つの属性INNER JOINをリンクする 2 つのステートメントを実行する必要があると言われました。suppid

同様にcitycode、表のサプライヤー (FK) と都市 (PK) の両方で同じことを行う必要があります。

ここに私が持っているものがあります:

SELECT      I.stkid     ,   I.stkname   ,   C.cityname "Supplier Location"
FROM        stockitem I

-- inner join stockitem <-> supplier
INNER JOIN  supplier S 
ON          I.suppid = S.suppid

-- inner join supplier <-> city
INNER JOIN  city C
ON          S.citycode = C.citycode

ORDER BY    stkid ASC;

どんな助けでも素晴らしいでしょう。

ありがとう!!

編集:申し訳ありませんが、出力を送信するのを完全に忘れていました。これが私が得続けるエラーです。

SELECT      I.stkid     ,   I.stkname   ,   C.cityname "Supplier Location"
                                *
Error at line 1:
ORA-00904: "C"."CITYNAME": invalid identifier

INNER JOIN  supplier S 
*
Error at line 1:
ORA-00900: invalid SQL statement

INNER JOIN  city C
*
Error at line 1:
ORA-00900: invalid SQL statement

私は単純にすべてのストックアイテム行が、(サプライヤーテーブルを介して) 都市テーブルから参照された相対的な属性stkidstknameおよびと共に返されることを期待していました。cityname

4

1 に答える 1

1

Oracleはクエリを3つの異なるクエリのように扱っているようです。空白行などを削除してみてください。

それが機能しない場合は、次のように暗黙の内部結合を使用できます。

SELECT      I.stkid     ,   I.stkname   ,   C.cityname "Supplier Location"
FROM        stockitem I, supplier S , city C
where     I.suppid = S.suppid and   S.citycode = C.citycode
ORDER BY    stkid ASC;
于 2013-03-18T07:42:05.513 に答える