在单个查询中使用多个内部联接的外部联接

时间:2014-12-31 10:38:18

标签: sql-server-2008

我想在单个查询中使用带有内部联接的外部联接

查询:

select d.unit_name, a.tour_code, a.hub_code, b.name, c.pp_no, c.dte_of_expiry
from bkng_mst a , bkng_pax b, bkng_cust c, unit_mst d
where a.bkng_id = b.bkng_id 
and b.unit_cde = d.unit_cde 
and a.unit_cde = d.unit_cde 
and b.cust_id = c.cust_id 
and a.bkng_stat = 'CNF' 
and b.bkng_pax_cancel_flg = 'N' 
and a.bkng_id = 'XXXX'

在a.bkng_id = pd.bkng_id上使用表pax_dtl pd中的外部联接以及上述查询

1 个答案:

答案 0 :(得分:0)

更新:

我认为,考虑到评论中提供的信息,以下查询应该会有所帮助:

SELECT DISTINCT
    d.unit_name, a.tour_code, a.hub_code, b.name, c.pp_no, c.dte_of_expiry,
    pd.bkng_id, pd.unit_name, pd.tour_code, pd.pax_name, pd.pnr_no, pd.fare_base, pd.is_block, pd.is_system
FROM 
    bkng_mst a 
    INNER JOIN bkng_pax b
       ON a.bkng_id = b.bkng_id
    INNER JOIN bkng_cust c 
       ON b.cust_id = c.cust_id
    INNER  JOIN unit_mst d
       ON b.unit_cde = d.unit_cde 
          AND a.unit_cde = d.unit_cde
    LEFT OUTER JOIN pax_dtl pd 
        ON a.bkng_id=pd.bkng_id 
WHERE  
    a.bkng_stat = 'CNF' 
    AND b.bkng_pax_cancel_flg = 'N' 
    AND a.bkng_id = 'XXXX'

由于bkng_mstpax_dtl表之间的 1对多关系,上述查询中的列d.unit_name, a.tour_code, a.hub_code, b.name, c.pp_no, c.dte_of_expiry仅在1个特定{{1}时重复} bkng_id列中至少有一个不同的值。

我希望它对你有帮助,但如果有任何疑问,请写下来。