2

約 1 週間前に SQL を開始したばかりですが、なぜこれがエラーになるのか疑問に思っています。上部に Select * を実行すると、ITEM_NUMBER が表示され、他の列名を使用した場合も表示されますが、これは表示されません。

私はOracleを使用しており、ORDER_DELIVERABLESにはプライマリキーとしてITEM_NUMBERがあり、DIGITALPRODUCT_ORDER.ITEM_NUMBERにはプライマリフォーリンであると想定するPFとしてそれがありますか?

誰かが私を助けて、少し説明してくれたら、それは素晴らしいことです。ありがとう!

SELECT ITEM_NUMBER
FROM
(
  SELECT *
  FROM ORDER_DELIVERABLES
  INNER JOIN DIGITALPRODUCT_ORDER 
          ON DIGITALPRODUCT_ORDER.ITEM_NUMBER = ORDER_DELIVERABLES.ITEM_NUMBER
)
4

2 に答える 2

3

どのようなエラーが返されますか?

*部分で使用するselectと2つのテーブルからitem_numberが選択されるため、エンジンはどちらを使用するかを認識できないため、これはあいまいなフィールドエラーであると思われます。これを試して:

SELECT t.it
FROM
(
  SELECT o.ITEM_NUMBER it
  FROM ORDER_DELIVERABLES o
      INNER JOIN DIGITALPRODUCT_ORDER d ON d.ITEM_NUMBER = o.ITEM_NUMBER
) t

コメントしたように、クエリは実際には次のように実行できます。

SELECT o.ITEM_NUMBER
FROM ORDER_DELIVERABLES o
      INNER JOIN DIGITALPRODUCT_ORDER d ON d.ITEM_NUMBER = o.ITEM_NUMBER
于 2012-06-19T23:00:41.887 に答える
0

次の 2 つのレベルで考える必要があります。

1.) ORDER_DELIVERABLES から主キーを取得しましょう。

SHOW INDEX FROM ORDER_DELIVERABLES

2.) メインクエリに組み込みましょう

SELECT ITEM_NUMBER
FROM SOME_MAIN_TABLE
WHERE ID = (
    SHOW INDEX FROM ORDER_DELIVERABLES
)

このロジックは MySQL に基づいていますが、Oracle のマニュアルを参照すると、クレイジーな結合を行わずにテーブルから主キーにアクセスする方法を見つけることができると確信しています :)。

于 2012-06-19T23:07:21.667 に答える