By using AND, you've moved the test for 79760 into the JOIN condition. I
wouldn't have thought of that, either. This seems to be a peculiarity of a
LEFT JOIN. Normally, if you compare a NULL value against anything, even
another NULL, the result is NULL (neither true nor false). I don't
understand what that would do to an AND operation, I would think the result
would be false.

I hope someone else can explain that to us.

Regards,

Jerry Schwartz
The Infoshop by Global Information Incorporated
195 Farmington Ave.
Farmington, CT 06032

860.674.8796 / FAX: 860.674.8341

www.the-infoshop.com
www.giiexpress.com
www.etudes-marche.com


> -----Original Message-----
> From: Critters [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, August 22, 2007 3:30 PM
> To: Jerry Schwartz
> Cc: 'MySQL General'
> Subject: Re: Left join is not doing what I thought it should do.
>
> It works if I do AND instead of WHERE
> Go figure
>
> LEFT JOIN friends ON gameLeaderboards.userID = friends.userB
> AND friends.userA = 79760
>
> --
> Dave
>
> Jerry Schwartz wrote:
> > I think your problem is that you can't have a "missing"
> friends record that
> > also has a non-null value for friends.userA. If
> friends.userA = 79760, then
> > you've found a record.
> >
> > You can have records where userA is something valid and
> UserB is null, but
> > then you can't join on UserB.
> >
> > Does that help?
> >
> > Regards,
> >
> > Jerry Schwartz
> > The Infoshop by Global Information Incorporated
> > 195 Farmington Ave.
> > Farmington, CT 06032
> >
> > 860.674.8796 / FAX: 860.674.8341
> >
> > www.the-infoshop.com
> > www.giiexpress.com
> > www.etudes-marche.com
> >
> >
> >
> >> -----Original Message-----
> >> From: Critters [mailto:[EMAIL PROTECTED]
> >> Sent: Wednesday, August 22, 2007 12:23 PM
> >> To: MySQL General
> >> Subject: Left join is not doing what I thought it should do.
> >>
> >> I have 3 tables
> >> A users table (userID, userName)
> >> A leaderboard table (userID, score)
> >> A friends table (userIDA, userIDB)
> >>
> >> I would like to produce the following result:
> >>
> >> userName, score, userIDA
> >> Dave, 100, 1
> >> Simon, 200, 5
> >> Paul, 300, NULL
> >>
> >> The 3rd record is NULL as there is no record in "friends"
> >> with a userIDB
> >> matching users (or leaderboard) userID
> >>
> >> I have tried this:
> >>
> >> SELECT users.username, gameLeaderboards.playerpoints, friends.userA
> >> FROM gameLeaderboards
> >> JOIN users ON gameLeaderboards.userID = users.ID
> >> LEFT JOIN friends ON gameLeaderboards.userID = friends.userB
> >> WHERE friends.userA = 79760
> >>
> >> The where is so there is only a value in the "userIDA"
> column if the
> >> user is friends with userID 79760
> >>
> >> But what I get instead of lots of records with 79760 and
> >> NULLs is just
> >> records from the leaderboard table that have a matching
> userID in the
> >> friend table, hmmf
> >>
> >> Any ideas?
> >>
> >> Thanks
> >> -
> >> Dave
> >>
> >>
> >> --
> >> MySQL General Mailing List
> >> For list archives: http://lists.mysql.com/mysql
> >> To unsubscribe:
> >> http://lists.mysql.com/[EMAIL PROTECTED]
> >>
> >>
> >>
> >
> >
> >
> >
> >
>
>




-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to