RE: New member / outer join problem

2003-11-06 Thread Stephane Faroult
Attila,

  Review your logic. A row full of NULLs has no signification. If your statement is 
embedded into either some PL/SQL code or a 3rd generation language, Oracle will 
generate a 'no data found' error, and this is what you need to trap.
  For instance in PL/SQL

   begin
 select c1, c2, c3
 into var1, var2, var3
 from some_table
 where some_condition;
   exception
 when no_data_found yhen
 var1 := null;
 var2 := null;
 var3 := null;
   end;

   At this point, you have what you want into var1 ... varn.
 Assuming that the query may return several rows, you can do a BULK COLLECT into 
arrays.

  HTH,

  SF

- --- Original Message --- -
From: [EMAIL PROTECTED]
To: Multiple recipients of list ORACLE-L
[EMAIL PROTECTED]
Sent: Thu, 06 Nov 2003 04:04:38

Hi All,

I'm a new member on this list. I'm not too familiar
with ORA, but I have some experience in other
RDBMS's.

I had run into the following problem.
My task is to write a query, which returns with an
empty (full of NULLs) row, if the condition is
false.

I'm thinking in outer joins.

I made a test. It returns all the matching rows (if
there are such rows), but unfortunately returns
with no row, if the condition is false.
Could someone help me, what could be the problem?
My oppinion is that it must be work fine...  :-)

I use Oracle9i Enterprise Edition Release 9.2.0.1.0
.

My test is here:
--
create table ATTILA_1 (m1 varchar2(10));
insert into attila_1 values('a');
insert into attila_1 values('a');
insert into attila_1 values('b');

SELECT
b.*
FROM
  dual left outer JOIN ATTILA_1 b 
 ON (b.m1='c');

---

It returns correctly (with 2 or 1 rows) if the
string in the condition is 'a' or 'b', but returns
with no row (I'd like to see one row, with full of
NULLs) if I call it with 'c'... :-(

Could you tell me, why is this? Or any idea to
solve this task?

Thanks in advance:
Attila
-- 
Please see the official ORACLE-L FAQ:
http://www.orafaq.net
-- 
Author: [EMAIL PROTECTED]
  INET: [EMAIL PROTECTED]

-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: Stephane Faroult
  INET: [EMAIL PROTECTED]

Fat City Network Services-- 858-538-5051 http://www.fatcity.com
San Diego, California-- Mailing list and web hosting services
-
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).


RE: New member / outer join problem

2003-11-06 Thread attila.mosolygo
Hi Stephane,

  Review your logic. A row full of NULLs has no signification. If your statement is 
embedded into either some PL/SQL code or a 3rd generation language, Oracle will 
generate a 'no data found' error, and this is what you need to trap.

I want to run it in SQL, not in PL/SQL.

I Understand, what you mean - one of my collague asked me to solve this problem (the 
environment, in which he wants to embed this code requires some rows).
Of course, the full NULL row has no meaning. But our DB is very-very dirty (no 
comment), so in normal case where I want to use this statement, there is always a row.

Finally I solved this problem with a workaround:

-
SELECT
b.*
FROM
  dual left outer join ATTILA_1 b 
 ON ((b.m1=dummy or 1=1 )and b.m1='c')
-

So I realized, if there is no column from the left side in the join-expression, the 
select will return no rows if there is no matching row(s) in the right side. (If 
there are matching rows, the select will provide them). With this trick it will 
provide the required result...
I don't know, if this is a bug, or this is the normal operation


Thanks -
Attila
-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: [EMAIL PROTECTED]
  INET: [EMAIL PROTECTED]

Fat City Network Services-- 858-538-5051 http://www.fatcity.com
San Diego, California-- Mailing list and web hosting services
-
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).