在Postgresql中,如果说模式"purchase_order“不存在,查询将得到一个错误。
from ((select a.item_no
from stocka a
join order_item oi
on (oi.item_no = a.item_no)
join purchase_order po
on (po.order_no = oi.order_no)
where po.location = 'LocationA'
) UNION ALL
(select b.item_no
from stockb b
join order_item oi
on (oi.item_no = b.item_no)
join purchase_order po
on (po.order_no = oi.order_no)
where po.location = 'LocationB'
))
Union
用于from子句
因为某种原因,purchase_order不是一个表,而是一个模式。
发布于 2014-05-21 20:43:52
您描述的错误并不是由于您发布的代码,如果存在对象,代码应该可以工作。
我只添加了一个 for the subquery:sub
(必需!),简化为USING
(可选),删除了多余的括号并重新格式化:
SELECT *
FROM (
SELECT a.item_no
FROM stocka a
JOIN order_item oi USING (item_no)
JOIN purchase_order po USING (order_no)
WHERE po.location = 'LocationA'
UNION ALL
SELECT b.item_no
FROM stockb b
JOIN order_item oi USING (item_no)
JOIN purchase_order po USING (order_no)
WHERE po.location = 'LocationB'
) sub;
取决于db布局(表定义?)而确切的要求,这可能会进一步简化。
https://stackoverflow.com/questions/23793251
复制相似问题