日期:2014-05-17  浏览次数:20933 次

求一个sql 拼接 + 急急急 + 高分 +
想将2个sql 拼成一个sql 

单独用都没问题, 现在需要将2个拼成一个,来查询,上面的左连接没问题,现在是想加个查询,当 ismajor等于真时,查询出另外的信息,如果我直接拼的话,会查询不到数据,

// 一个sql 

select bl.name as w,bp.name as wa from c_order c
left outer join C_BPARTNER bp on bp.C_BPARTNER_ID=c.C_BPARTNER_ID
left outer join C_BPARTNER_LOCATION bl on bl.C_BPARTNER_LOCATION_ID=c.C_BPARTNER_LOCATION_ID

// 一个sql , 里面只会有一条数据,当条件为真时。
select * from c_bpartner db where db.ismajor='Y'





求求求   

------解决方案--------------------
select * from (select bl.name as w,bp.name,bp.ismajor as wa from c_order c
left outer join C_BPARTNER bp on bp.C_BPARTNER_ID=c.C_BPARTNER_ID) t left join C_BPARTNER_LOCATION bl on bl.C_BPARTNER_LOCATION_ID=c.C_BPARTNER_LOCATION_ID where t.ismajor='Y'
------解决方案--------------------
select bl.name as w,bp.name as wa from c_order c
full   join C_BPARTNER bp on bp.C_BPARTNER_ID=c.C_BPARTNER_ID
left outer join C_BPARTNER_LOCATION bl on bl.C_BPARTNER_LOCATION_ID=c.C_BPARTNER_LOCATION_ID


------解决方案--------------------
select * from c_order c
left join C_BPARTNER pn on pn.C_BPARTNER_ID=c.C_BPARTNER_ID 
left outer join C_BPARTNER_LOCATION bl on bl.C_BPARTNER_LOCATION_ID=c.C_BPARTNER_LOCATION_ID
union all
select * from c_order c
where exists(select 1 from c_bpartner db where db.ismajor='Y' and db.C_BPARTNER_ID=c.C_BPARTNER_ID)
没太懂你的需求。。


------解决方案--------------------
引用:
select * from c_order c
left join C_BPARTNER pn on pn.C_BPARTNER_ID=c.C_BPARTNER_ID 
left outer join C_BPARTNER_LOCATION bl on bl.C_BPARTNER_LOCATION_ID=c.C_BPARTNER_LOCATION_ID
union all
select *……

试试这个吧。
------解决方案--------------------
还是考虑一下用存储过程吧
------解决方案--------------------
为什么不在查出来的结果里面decode呢
------解决方案--------------------
select * from c_order c
left join C_BPARTNER pn on pn.C_BPARTNER_ID=c.C_BPARTNER_ID 
left outer join C_BPARTNER_LOCATION bl on bl.C_BPARTNER_LOCATION_ID=c.C_BPARTNER_LOCATION_ID
union all
select * from c_order c
where c.issotrx='Y' 
------解决方案--------------------
select C.* from c_order c
left join C_BPARTNER pn on pn.C_BPARTNER_ID=c.C_BPARTNER_ID 
left outer join C_BPARTNER_LOCATION bl on bl.C_BPARTNER_LOCATION_ID=c.C_BPARTNER_LOCATION_ID
union all
select C1.* from c_order c1
where c1.issotrx='Y'  
------解决方案--------------------