+ -
当前位置:首页 → 问答吧 → 帮忙看看这样的sql怎么写

帮忙看看这样的sql怎么写

时间:2011-10-31

来源:互联网

SQL code
select PC.NAME,(case when instr(PC.sourcecode,tb_cp.sourcekpiid) > 0 then tb_cp.capesname else null end) from cp_kpi_info_fy tb_cp, cp_om_kpi_info_fy PC


tb_cp.sourcekpiid这个字段里包含1个或者几个PC.sourcecode字段的值。

我现在想列出PC表里NAME字段的所有值,如果PC表里的sourcecode被包含在tb_cp.sourcekpiid里,那么就列出tb_cp的capesname字段。


但是我用上面那个查询出PC表里几十倍的值,我想是因为2个表间没加左连接,但是2个表就我说的这个被包含的关系,我怎么加左连接呢?

作者: charlesxu   发布时间: 2011-10-31

select * from a, b
 where instr(',' || b.字段 || ',', 
  ',' || a.字段 || ',' ) > 0;

作者: cosio   发布时间: 2011-10-31

SQL code
with a as
(select 'a123' aa from dual)
,b as
(select 'a123,b456' bb from dual
union all
select 'c789,d123' from dual
union all
select 'a123,dadaf' from dual
)

select * from a,b where  bb like '%'||aa||'%'

--result:

a123    a123,b456
a123    a123,dadaf

作者: cosio   发布时间: 2011-10-31

select pc.name ,tb_cp.capesname
from cp_om_kpi_info_fy PC left join cp_kpi_info_fy tb_cp
on instr(PC.sourcecode,tb_cp.sourcekpiid) > 0


作者: dawugui   发布时间: 2011-10-31

SQL code
select t3.capesname from cp_kpi_info_fy t3, cp_om_kpi_info_fy t4 where instr(t4.sourcecode,t3.sourcekpiid) > 0


这样做,只能查到t3.sourcekpiid里包含t4.sourcecode的记录。

我是想列出所有t4的记录,然后把t3里包含t4的列出名字来,不包含的显示为空

作者: charlesxu   发布时间: 2011-10-31