Many thanks for your input. Looks like the older version of mysql, preceding 5.0 has some problems. I've to upgrade mysql now. :-( Thanks again.
Mogens Melander <[EMAIL PROTECTED]> wrote: Well, trying your example gives me the expected result. select cust.ssn, disposition.disposition, source.source from cust LEFT JOIN source ON (cust.source=source.id) LEFT JOIN disposition ON (cust.disposition=disposition.id); '123456789', 'dispo2', 'source1' '123456780', 'dispo1', 'source2' '123456781', null, null On Wed, April 4, 2007 00:03, murthy gandikota wrote: > Hi Mike > Thanks for your input. I read the page before and it caused more > confusion. > May be an example would clarify this: > > create table `cust` (`ssn` varchar(10), `source` int(3) , `disposition` > int(3)); > insert into cust (ssn, source, disposition) values ('123456789', 1, 2); > insert into cust (ssn, source, disposition) values ('123456780', 2, 1); > insert into cust (ssn, source, disposition) values ('123456781', NULL, > NULL); > > create table `source` (`id` int(3), `source` varchar(10)); > insert into source(id, source) values (1, 'source1'); > insert into source(id,source) values (2, 'source2'); > > create table `disposition` (`id` int(3), `disposition` varchar(10)); > insert into disposition (id, disposition) values (1, 'dispo1'); > insert into disposition(id,disposition) values (2, 'dispo2'); > > Now I run the sql: > select cust.ssn, disposition.disposition, source.source from cust LEFT > JOIN source ON (cust.source=source.id) LEFT JOIN disposition ON > (cust.disposition=disposition.id) > > +-----------+-------------+---------+ > | ssn | disposition | source | > +-----------+-------------+---------+ > | 123456789 | dispo2 | source1 | > | 123456789 | dispo2 | source1 | > | 123456780 | dispo1 | source2 | > | 123456780 | dispo1 | source2 | > | 123456781 | NULL | NULL | > +-----------+-------------+---------+ > > I don't want this cos the ssn 123456780 is shown twice > > select cust.ssn, disposition.disposition, source.source from cust RIGHT > JOIN source ON (cust.source=source.id) RIGHT JOIN disposition ON > (cust.disposition=disposition.id) > > +-----------+-------------+---------+ > | ssn | disposition | source | > +-----------+-------------+---------+ > | 123456789 | dispo2 | source1 | > | 123456789 | dispo2 | source1 | > | 123456780 | dispo1 | source2 | > | 123456780 | dispo1 | source2 | > +-----------+-------------+---------+ > > This has the same problem. > > All I want is > > +-----------+-------------+---------+ > | ssn | disposition | source | > +-----------+-------------+---------+ > | 123456789 | dispo2 | source1 | > | 123456780 | dispo1 | source2 | > | 123456781 | NULL | NULL | > +-----------+-------------+---------+ > > I'd appreciate your help. > Thanks > Murthy > Michael Dykman wrote: > a left join and a right join are 2 very distinct things... It is not > clear from your text what it is you exactly are going for here but I > doubt that applying either LEFT or RIGHT to ALL of your (many) joins > is going to give it to you. You need to stop and examine the > relationships between the tables in this query and determine which > class of JOIN you will need (and there are more than just these 2). > > The description you gave of your results using RIGHT and LEFT > universally are consistent with what I would expect from those types > of joins. I suggest that you read this page very carefully before you > continue: > > http://dev.mysql.com/doc/refman/5.1/en/join.html > > - michael > > On 4/3/07, murthy gandikota wrote: >> I tried the following 2 SQL's and the results are less than >> satisfactory. The RIGHT join does not show where disposition is NULL. >> The LEFT join shows dispositions as NULL where they shouldn't be. Also >> the LEFT join generates more dupes. Any way to fix this? >> >> select cust.first as FIRST, cust.last as LAST, cust.address AS ADDRESS, >> cust.city as CITY, cust.state as STATE, cust.zip as ZIP, cust.ssn as >> SSN, disposition.disposition as DISPOSITION, leadSource.source as >> SOURCE, cust.loanBalance AS LOANBALANCE, cust.currentPayment as >> CURRENTPAYMENT, cust.newPayment as NEWPAYMENT from cust RIGHT JOIN >> disposition on (cust.disposition=disposition.id) RIGHT JOIN leadSource >> on (cust.source=leadSource.id) where agentCode=11 and newPayment > 0 and >> cust.disposition > 0 order by SOURCE, DISPOSITION >> >> select cust.first as FIRST, cust.last as LAST, cust.address AS ADDRESS, >> cust.city as CITY, cust.state as STATE, cust.zip as ZIP, cust.ssn as >> SSN, disposition.disposition as DISPOSITION, leadSource.source as >> SOURCE, cust.loanBalance AS LOANBALANCE, cust.currentPayment as >> CURRENTPAYMENT, cust.newPayment as NEWPAYMENT from cust LEFT JOIN >> disposition on (cust.disposition=disposition.id) LEFT JOIN leadSource on >> (cust.source=leadSource.id) where agentCode=11 and newPayment > 0 and >> cust.disposition > 0 order by SOURCE, DISPOSITION >> >> The MYSQL has the following version >> >> mysql Ver 14.7 Distrib 5.0.2-alpha, for pc-linux (i686) >> >> Thanks for your help >> Murthy >> >> >> --------------------------------- >> Don't get soaked. Take a quick peek at the forecast >> with theYahoo! Search weather shortcut. > > > -- > - michael dykman > - [EMAIL PROTECTED] > > - All models are wrong. Some models are useful. > > > > --------------------------------- > 8:00? 8:25? 8:40? Find a flick in no time > with theYahoo! Search movie showtime shortcut. > -- > This message has been scanned for viruses and > dangerous content by OpenProtect(http://www.openprotect.com), and is > believed to be clean. > > -- Later Mogens Melander +45 40 85 71 38 +66 870 133 224 -- This message has been scanned for viruses and dangerous content by OpenProtect(http://www.openprotect.com), and is believed to be clean. -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED] --- Scanned by M+ Guardian Extreme Messaging Firewall by Messaging Architects --- --------------------------------- Now that's room service! Choose from over 150,000 hotels in 45,000 destinations on Yahoo! Travel to find your fit.