Читая ваши комментарии выше, вы продолжаете говорить, что
часть "детали заказа" должна была быть с третьим соединением, но даже с этой удаленной частью , такая же ошибка существует.
Что такое "эта часть"? Если вы имели в виду объединение с таблицей ORDER_DETAILS
1011 *, эта «часть» должна быть добавлена, а не удалена. Или вы должны удалить столбец, принадлежащий таблице ORDER_DETAILS
, которого нет в предложении FROM
.
Было бы полезно, если бы вы предоставили описание таблиц; Я создал их сам, используя минимальный набор столбцов, чтобы запрос работал. Посмотри.
SQL> -- CUSTOMERS: column names taken from your query
SQL> create table customers
2 (customer_id number constraint pk_cust primary key,
3 customer_name varchar2(20));
Table created.
SQL> -- ORDER_HEADER: ORDER_ID must exist in order to join it with ORDER_DETAIL
SQL> create table order_header
2 (order_id number constraint pk_oh primary key,
3 customer_id number constraint fk_oh_cust references customers (customer_id),
4 total_sales number);
Table created.
SQL> -- ORDER_DETAIL: I added ORDER_ID as a reference to ORDER_HEADER
SQL> create table order_detail
2 (order_id number constraint fk_od_oh references order_header (order_id),
3 quantity number);
Table created.
A полный запрос, который использует все 3 таблицы, будет выглядеть так:
SQL> select c.customer_name,
2 oh.total_sales,
3 od.quantity,
4 c.customer_id
5 from customers c join order_header oh on oh.customer_id = c.customer_id
6 join order_detail od on od.order_id = oh.order_id;
no rows selected
По вашему запросу:
SQL> -- query you wrote, slightly formatted:
SQL> Select C.customer_name,
2 Order_Header.total_sales,
3 order_detail.quantity,
4 C.customer_ID
5 From Customers C
6 Join Order_Header Using (Customer_ID);
C.customer_ID
*
ERROR at line 4:
ORA-25154: column part of USING clause cannot have qualifier
Это означает, что вы должны удалить «C.
» в строке 4:
SQL> Select C.customer_name,
2 Order_Header.total_sales,
3 order_detail.quantity,
4 customer_ID
5 From Customers C
6 Join Order_Header Using (Customer_ID);
order_detail.quantity,
*
ERROR at line 3:
ORA-00904: "ORDER_DETAIL"."QUANTITY": invalid identifier
Теперь у вас есть другая ошибка - вы ссылаетесь на столбец QUANTITY
, который принадлежит ORDER_DETAIL
, на который вы никогда не ссылались в предложении FROM
; так что - уберите этот столбец из SELECT
:
SQL> Select C.customer_name,
2 Order_Header.total_sales,
3 -- order_detail.quantity,
4 customer_ID
5 From Customers C
6 Join Order_Header Using (Customer_ID);
no rows selected
Или добавьте ORDER_DETAIL
к предложению FROM
, которое возвращает вас к запросу, который я первоначально разместил.