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

求个查询语句(多表),有点复杂
表pm_obj:
id name type
1001 sms s
1002 tnt t

表pm_socre:
id desc score
6550 aaa 2500
6551 ccc 3000

表pm_sub_element:
subid ele_type ele_id
1 5 1001
1 6 6550
ele_type=5时,ele_id存入的是pm_obj.id值;
ele_type=6时,ele_id存入的是pm_socre.id值;
我想用一条语句查询出:subid=1时,pm_obj.name,pm_obj.type,pm_socre.score这个语句怎么写啊?

------解决方案--------------------
你要的这个 不成成为一个结果吧?
你把你要的结果 敲出来一下~ 

subid=1时 也就是有1001 和 6550 两个元素,但是两个元素 有的有pm_socre.score 有的没有
你的结果要怎么显示?
------解决方案--------------------
SQL code

create table pm_obj(id varchar(10), name varchar(10), type varchar(10))

create table pm_score(id varchar(10), xdesc varchar(10), score varchar(10))

create table pm_sub_element(subid varchar(10),
                            ele_type varchar(10),
                            ele_id varchar(10))

insert into pm_obj values ('1001', 'sms', 's');
insert into pm_obj values ('1002', 'tnt', 't');

insert into pm_score values ('6550', 'aaa', '2500');
insert into pm_score values ('6551', 'ccc', '3000');

insert into pm_sub_element values ('1', '5', '1001');
insert into pm_sub_element values ('1', '6', '6550');

select a.name, a.type
  from pm_obj a, pm_sub_element c
 where c.subid = '1'
   and c.ele_type = '5'
   and c.ele_id = a.id
union
select b.xdesc, b.score
  from pm_score b, pm_sub_element c
 where c.subid = '1'
   and c.ele_type = '6'
   and c.ele_id = b.id

抛砖引玉...