首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

sql 拼接 + 急 + 高分 +

2013-06-19 
求一个sql 拼接 + 急急急 + 高分 +想将2个sql 拼成一个sql 单独用都没问题, 现在需要将2个拼成一个,来查询

求一个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'  
------解决方案--------------------


select C.name 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 pn.name from C_BPARTNER pn
where pn.ismajor='Y'
两个sql连成一个,可以用union all,但是返回列应该一样。你试试吧

热点排行