连接两个Oracle查询

连接两个Oracle查询,oracle,join,Oracle,Join,我必须从两个表中查询,并且需要一个结果。。如何连接这两个查询 第一个查询来自两个表,第二个查询仅来自一个表 select pt.id,pt.promorow,pt.promocolumn,pt.type,pt.image,pt.style,pt.quota_allowed,ptc.text,pq.quota_left from promotables pt,promogroups pg ,promotablecontents ptc ,promoquotas pq where pt.id_p

我必须从两个表中查询,并且需要一个结果。。如何连接这两个查询

第一个查询来自两个表,第二个查询仅来自一个表

select pt.id,pt.promorow,pt.promocolumn,pt.type,pt.image,pt.style,pt.quota_allowed,ptc.text,pq.quota_left 

from promotables pt,promogroups pg ,promotablecontents ptc ,promoquotas pq where pt.id_promogroup = 1 and ptc.country ='049' and ptc.id_promotable = pt.id and pt.id_promogroup = pg.id and pq.id_promotable = pt.id order by pt.promorow,pt.promocolumn

select  pt.id,pt.promorow,pt.promocolumn,pt.type,pt.image,pt.style,pt.quota_allowed from promotables pt where pt.type='heading'

使用UNION或UNION ALL。只要列的数量相同,并且它们是兼容的类型,就应该满足您的需要

SELECT pt.id, pt.promorow, pt.promocolumn, pt.type, pt.image, pt.style, pt.quota_allowed, ptc.text, pq.quota_left 
FROM promotables pt, promogroups pg, promotablecontents ptc, promoquotas pq 
WHERE pt.id_promogroup = 1
AND ptc.country ='049' 
AND ptc.id_promotable = pt.id
AND pt.id_promogroup = pg.id
AND pq.id_promotable = pt.id 
UNION
SELECT pt.id, pt.promorow, pt.promocolumn, pt.type, pt.image, pt.style, pt.quota_allowed, NULL, NULL
FROM promotables pt 
WHERE pt.type='heading'
ORDER BY 2, 3

如果要显示重复项(例如,来自两个查询的相同行),请使用UNION ALL

仅为另一个查询中的列选择NULL。这意味着您仍将获得该列,并且查询1的结果中可能有数据,而查询2的行中这些列的数据将始终包含NULL。是否要联接查询或连接查询?在SQL中,这意味着不同的事情。连接通常意味着连接条件(
从A.col=b.col
上的连接b中选择),而连接只是将一个查询的结果附加到另一个查询(例如,通过
UNION
UNION ALL
)。