Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Re: another mental block - Help still wanted Pleeeeease!!!
Daniel Morgan <damorgan_at_x.washington.edu> wrote in message news:<1067098381.237653_at_yasure>...
> Charlie Edwards wrote:
>
> >create table tclval
> >(v_cat varchar2(2) not null, v_type varchar2(3), v_val number(8,2));
> >insert tclval values ('AV','TLL',150);
> >insert tclval values ('AV',null,100);
> >
> >create table tclnvv
> >(n_id number not null,v_cat varchar2(2) not null, v_type varchar2(3)
> >not null);
> >
> >insert into tclnvv values (2344,'AV','TLL');
> >insert into tclnvv values (2345,'AV','TLP');
> >insert into tclnvv values (2346,'AJ','RDD');
> >insert into tclnvv values (2347,'AJ','RDL');
> >insert into tclnvv values (2349,'AJ','RPN');
> >insert into tclnvv values (2350,'AJ','RPX');
> >insert into tclnvv values (2351,'AJ','RPN');
> >
> >What I would like to do it to retrieve the value for each record in
> >tclnvv using v_cat and v_type to join. However, if there is no exact
> >match then I would like to use the record in tclval where v_cat
> >matches but v_type is null (i.e. v_type is acting as "other").
> >
> >Can anyone help?
> >
> >Thanks
> >
> >CE
> >
> >
> UNION ALL two separate queries. One an inner join, one an outer join
> specifying the NULL condition.
OK, with slightly amended data I get
drop table tclval;
create table tclval
(v_cat varchar2(2) not null, v_type varchar2(3), v_val number(8,2));
insert into tclval values ('AV','TLL',150); insert into tclval values ('AV',null,100); insert into tclval values ('AJ','RDL',120); insert into tclval values ('AJ','RPN',125);
drop table tclnvv;
create table tclnvv
(n_id number not null,v_cat varchar2(2) not null, v_type varchar2(3));
insert into tclnvv values (1111,'AV','TLL'); insert into tclnvv values (2222,'AV','TLP'); insert into tclnvv values (3333,'AV','TQD'); insert into tclnvv values (4444,'AV',null); insert into tclnvv values (5555,'AJ','RDL'); insert into tclnvv values (6666,'AJ','RPX'); insert into tclnvv values (7777,'AJ','RPN');
My inner join gets me
select n.n_id, n.v_cat, n.v_type, v.v_val from tclnvv n, tclval v
N_ID V_ V_T V_VAL
--------- -- --- ---------
1111 AV TLL 150 5555 AJ RDL 120 7777 AJ RPN 125
My outer join gets me
select n.n_id, n.v_cat, n.v_type, v.v_val from tclnvv n, tclval v
N_ID V_ V_T V_VAL
--------- -- --- ---------
1111 AV TLL 150 2222 AV TLP 3333 AV TQD 4444 AV 5555 AJ RDL 120 6666 AJ RPX 7777 AJ RPN 125
7 rows selected.
So the union all gets me
select n.n_id, n.v_cat, n.v_type, v.v_val from tclnvv n, tclval v
select n.n_id, n.v_cat, n.v_type, v.v_val from tclnvv n, tclval v where n.v_cat = v.v_cat(+)
N_ID V_ V_T V_VAL
--------- -- --- ---------
1111 AV TLL 150 2222 AV TLP 3333 AV TQD 4444 AV 5555 AJ RDL 120 6666 AJ RPX 7777 AJ RPN 125
7 rows selected.
But what I need is
N_ID V_ V_T V_VAL
--------- -- --- ---------
1111 AV TLL 150 2222 AV TLP 100 3333 AV TQD 100 4444 AV 100 5555 AJ RDL 120 6666 AJ RPX 200 7777 AJ RPN 125
Any help/suggestions gratefully received (I'm getting desperate)
CE Received on Wed Nov 05 2003 - 09:43:48 CST