【发布时间】:2015-01-10 17:19:06
【问题描述】:
我有这样的产品表
PRODUCT_ID PACK_SIZE PACK_PRIZE
3000 5 2.5
3001 5 2.5
3002 5 2.5
3003 5 2.5
订单表
order_id client_id
75001 1024
75002 1033
75003 1030
项目表
ORDER_ID PRODUCT_ID NUMBER_ORDERED
75001 3936 2
75001 3557 5
75001 3012 3
75001 3236 4
客户表
CLIENT_ID LAST_NAME STATUS
1021 Smith private
1022 Williams corporate
1023 Browne private
1024 Tinsell corporate
这些是我刚刚添加的示例数据,只是为了显示示例数据。 我想选择前 2 名完成订单且价值较高的私人客户。
我在选择最大销售量的订单时遇到问题。
这就是我想要做的。
在此我正在尝试获取客户端 IDS
SELECT CLIENTS.CLIENT_ID
FROM ORDERS
INNER JOIN ITEMS ON ORDERS.ORDER_ID=ITEMS.ORDER_ID
INNER JOIN PRODUCTS ON ITEMS.PRODUCT_ID =PRODUCTS.PRODUCT_ID
INNER JOIN CLIENTS ON ORDERS.CLIENT_ID = CLIENTS.CLIENT_ID
WHERE ( )
在此我试图选择前 2 个订单
SELECT TOP 2 ORDERS.ORDER_ID FROM ORDERS
INNER JOIN ITEMS ON ORDERS.ORDER_ID=ITEMS.ORDER_ID
INNER JOIN PRODUCTS ON ITEMS.PRODUCT_ID =PRODUCTS.PRODUCT_ID
WHERE ((PRODUCTS.PACK_PRIZE/PRODUCTS.PACK_SIZE)*(ITEMS.NUMBER_ORDERED));
给我错误 FROM 在预期的地方找不到关键字。
我想要做的是从具有最高总数且不是来自同一客户的订单中选择订单 ID,应通过将 pack_price 与 pack_size 相除并将其乘以项目中的 number_ordered 来找到单价来计算总数具有匹配订单 ID 的表。订购的客户应该是企业客户。
我正在使用 oracle 11g。
pack_prize 是数字 pack_size 是数字 number_ordered 为数字数据类型
【问题讨论】:
标签: sql oracle11g inner-join