我正在尝试加入多个表格来创建采购订单清单及其总成本。 我试图遵循SELECT语句,它返回错误 “'OA'。'AIRCRAFT_CODE'INVALID IDENTIFIER”
SELECT al.airline_code AS “Airline Code”,
po.purchase_order_no AS “Order Number”,
ac.aircraft_code as “Aircraft Code”,
oa.aircraft_quantity as “Quantity of Aircraft Ordered”,
SUM(oa.aircraft_quantity * ac.aircraft_price) AS “Order Total”
FROM Aircraft ac, Airline al, Ordered_Aircraft oa, Purchase_Order po
JOIN Airline al ON po.airline_code = al.airline_code
JOIN Aircraft ac ON oa.aircraft_code = ac.aircraft_code
JOIN Purchase_Order po ON oa.purchase_order_no = po.purchase_order_no
GROUP BY po.purchase_order_no
ORDER BY al.airline_code ASC;
数据库结构如下:
飞机
Name Null? Type
----------------------------------------- -------- ----------------------------
AIRCRAFT_CODE NOT NULL VARCHAR2(5 CHAR)
AIRCRAFT_TYPE NOT NULL VARCHAR2(30 CHAR)
AIRCRAFT_PRICE NOT NULL NUMBER(11,2)
航空公司
Name Null? Type
----------------------------------------- -------- ----------------------------
AIRLINE_CODE NOT NULL VARCHAR2(4 CHAR)
AIRLINE_NAME NOT NULL VARCHAR2(20 CHAR)
AIRLINE_ADDRESS NOT NULL VARCHAR2(100 CHAR)
AIRLINE_CITY NOT NULL VARCHAR2(20 CHAR)
AIRLINE_COUNTRY NOT NULL VARCHAR2(20 CHAR)
ordered_aircraft;
Name Null? Type
----------------------------------------- -------- ----------------------------
PURCHASE_ORDER_NO NOT NULL NUMBER(3)
AIRCRAFT_CODE NOT NULL VARCHAR2(5 CHAR)
AIRCRAFT_QUANTITY NOT NULL NUMBER(2)
PURCHASE_ORDER
Name Null? Type
----------------------------------------- -------- ----------------------------
PURCHASE_ORDER_NO NOT NULL NUMBER(3)
AIRLINE_CODE VARCHAR2(4 CHAR)
PURCHASE_ORDER_DATE NOT NULL DATE
任何帮助都会很棒。谢谢。
答案 0 :(得分:2)
在FROM:
之后将您要加入的表格从列表中删除SELECT
al.airline_code AS “Airline Code”,
po.purchase_order_no AS “Order Number”,
ac.aircraft_code as “Aircraft Code”,
oa.aircraft_quantity as “Quantity of Aircraft Ordered”,
SUM(oa.aircraft_quantity * ac.aircraft_price) AS “Order Total”
FROM Ordered_Aircraft oa /* , Airline al, Ordered_Aircraft oa, Purchase_Order po */ <---
JOIN Purchase_Order po
ON oa.purchase_order_no = po.purchase_order_no
JOIN Airline al
ON po.airline_code = al.airline_code
JOIN Aircraft ac
ON ac.aircraft_code = oa.aircraft_code
GROUP BY po.purchase_order_no
ORDER BY al.airline_code ASC;
使用以逗号分隔的表列表是一种不同的JOIN语法。如果您正在使用JOIN,则无需再次引用它们。