мульти-внутренний оператор соединения - PullRequest
0 голосов
/ 11 апреля 2019

В настоящее время я пытаюсь нарисовать несколько таблиц с помощью нескольких операторов внутреннего соединения.Однако я постоянно сталкиваюсь со следующей ошибкой:

ORA-00904: "PART"."ITEM_CLASS": invalid identifier

Я посетил несколько других страниц здесь , но эта проблема не совпадала с моей.

ЗдесьSQL-запрос:

SELECT Slsrep_Number, AVG(Commission_Rate) AS AVG_Rate, MAX(Total_Commission) as MAX_Comission 
  FROM Sales_Rep 
 WHERE Sales_Rep.Slsrep_Number = Customer.Slrsrep_Number 
   AND Customer.C_Number = Orders.C_Number 
   AND Orders.Order_Number = Order_Line.Order_Number 
   AND Order_Line.Part_Number = Part.Part_Number 
   AND Part.Item_Class = 'SG';

Вот таблицы (скриншоты):

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

Изображения перечислены в порядке, на который я ссылаюсь в запросе SQL.

Ответы [ 2 ]

2 голосов
/ 11 апреля 2019

Вам необходимо сослаться на таблицы в предложении FROM. Вы не можете просто ссылаться на них.

Вы также должны использовать псевдонимы таблиц и правильный, явный, стандартный JOIN синтаксис.

Итак:

SELECT sr.Slsrep_Number,
       AVG(?.Commission_Rate) AS AVG_Rate, 
       MAX(?Total_Commission) as MAX_Comission 
FROM Sales_Rep sr JOIN
     Customer c
     ON sr.Slsrep_Number = c.Slrsrep_Number JOIN
     Orders o
     ON c.C_Number = o.C_Number JOIN
     Order_Line ol
     ON o.Order_Number = ol.Order_Number 
     Part p
     ON ol.Part_Number = p.Part_Number 
WHERE p.Item_Class = 'SG';

? - псевдоним столбца с комиссией.

Запрос теперь "выглядит" правильно. Однако я не думаю, что это особенно полезно. Если это так, задайте другой вопрос и предоставьте образцы данных, желаемых результатов и объяснение того, чего вы хотите достичь.

0 голосов
/ 11 апреля 2019

Customer,Orders,Order_Line and Part В предложении from отсутствуют таблицы. Попробуйте это.

SELECT Slsrep_Number,
       AVG(Commission_Rate) AS AVG_Rate,
       MAX(Total_Commission) as MAX_Comission
  FROM Sales_Rep,Customer,Orders,Order_Line,Part
 WHERE Sales_Rep.Slsrep_Number = Customer.Slrsrep_Number
   AND Customer.C_Number = Orders.C_Number
   AND Orders.Order_Number = Order_Line.Order_Number
   AND Order_Line.Part_Number = Part.Part_Number
   AND Part.Item_Class = 'SG';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...