Thanks Remi =) I just ran a test and it worked. Honestly, I'm still a little stumped on why it works, but I'll keep playing with it for a while to see if I can get it. I'll either eventually figure it out or come back in frustration asking for more help ;) hehe
> -----Original Message----- > From: Remi Mikalsen [mailto:[EMAIL PROTECTED] > Sent: Friday, October 08, 2004 5:07 PM > To: [EMAIL PROTECTED] > Subject: Re: Convert subselect query to pre-subselect query > > Try this... > > select a.ID > from products a, categories b > where a.CategoryID=b.ID and (b.ID='21' OR b.ParentID='21') > > The query is pretty straigthforward and I believe it's quite > easy to understand. Hope this is > what you wanted! > > A tip... only use left and right joins whenever you want what > is on the "left" or "right" side of > the join in your results, even if you can't get any matches > on the "opposite" side. For > example (I'll try to make it simple!): imagine you have a > Video Club.You have movies, and > you have loans. Normally, movies in one table (the left table > in this example) and loans in > different table (the right table). Now, imagine you would > like to print a list of ALL movies in > your database, and ALSO list all loans for each movie. You > could do a LEFT JOIN similar to > this: select movies.*, loans.* from movies left join loans on > (movies.id = loans.movieid) order > by movies.title, loans.loan_date desc. The result would be a > list with ALL movies in your > database, ordered by the movie title. Each title would appear > once for every loan; the loans > would be ordered within the movie title, last first. Now, > here is the particularity with LEFT > JOINS: whenever a movie has NEVER been on loan, it will not > be possible to get any values > from the loans table. With an INNER JOIN (the type of join I > suggest for your problem), the > movie would be omitted in the query result, but with a LEFT > JOIN, the movie and all its > columns will appear once - but the loans columns > corresponding to that movie would appear > all NULL. Got it? hope I explained more or less well... > > Honestly, I almost never use LEFT and RIGHT joins, thus, the > syntax MIGHT be wrong (I > was too lazy to check in the manual :) ) - I'm not a pro in > MySQL, so if I explained something > wrong, I hope the more experienced members will correct it. > > > > Remi Mikalsen > > E-Mail: [EMAIL PROTECTED] > URL: http://www.iMikalsen.com > > > > On 8 Oct 2004 at 16:30, Ed Lazor wrote: > > > Hi Everyone, > > > > I got excited when I discovered subselects, but quickly > discovered that 4.1 > > is still in gamma and I can't put it onto my production > server. The query I > > wanted to use would be great, so maybe there's a way to > convert it - since > > the manual says most subselects can be done with joins. > I'm not sure how > > I'd do it though and figured I'd see if anyone here knows how. > > > > Here's the subselect that I'd like to use: > > > > select ID from products where CategoryID = (select ID from > categories where > > ID='21' OR ParentID = '21' ) > > > > How would I would I create a query using joins that > accomplishes the same > > result? > > > > Here's what I was attempting, in case it's close, but it's > erroring out: > > > > select ID from products right join categories where > (categories.ID = '21' or > > categories.ParentID='21') AND (products.CategoryID = > categories.ID or > > products.CategoryID = categories.ParentID) > > > > Thanks, > > > > Ed > > > > > > -- > > 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]