使用子集查询时标识符无效

时间:2018-06-11 10:49:30

标签: oracle plsql

我有以下查询:

SELECT (SELECT SUM(adults+children) as qty from reservation where id = 11407) as qty,
SUM((price * qty) - (price * nvl(qty_excluded,0))) 
FROM reservation_product
WHERE id = 11407

我收到以下消息:qty invalid identifier。

1 个答案:

答案 0 :(得分:1)

您的查询看起来很奇怪。表格中有一些ID,您说它既不是ID,也不是预订ID。但是你在两个表中都有它,所以预订可以引用与预订产品不同的预测。

在您的查询中,您不关心您选择的预订产品是否属于您选择的预订。

无论如何,您的查询只是转移到:

SELECT MAX(r.qty),
SUM((rp.price * r.qty) - (rp.price * nvl(rp.qty_excluded,0))) 
FROM reservation_product rp
CROSS JOIN 
(
  SELECT SUM(adults+children) as qty 
  FROM reservation 
  WHERE id = 11407
) r
WHERE id = 11407;