Thanks for your reply, Diana Soares wrote: > > Selecting manufacturers from just one color with join works like a charm. > > (IIRC, untested code:) > > > > SELECT DISTINCT ca.Manufacturer, co.Name FROM car_color_links as l > > JOIN colors as co ON (co.ID = l.color_ID) > > JOIN cars as ca ON (ca.ID = l.car_ID) > > WHERE co.Name = "Red" > > > > But I can't (understandably) just add an AND to the WHERE statement to select >two colors. > > I think that what you want is "OR" and not "AND". You want manufacturers > which have green cars OR blue cars... I really want manufacturers which have both green AND blue cars. > > What I want to do is: > > > > 1. Select all manufacturer which have Green AND Blue cars (or Green > > AND Blue AND Black cars, and so on). > > i.e. Green AND Blue should return Volvo. > > SELECT DISTINCT ca.Manufacturer, co.Name FROM car_color_links as l > JOIN colors as co ON (co.ID = l.color_ID) > JOIN cars as ca ON (ca.ID = l.car_ID) > WHERE co.Name = "Green" OR co.Name = "Blue" The problem (for me ;-) with your solution is that it results in more than one row per manufacturer. I have found a solution for my first question though. The trick was to join car_color_links and colors multiple times, once for each color. (IIRC once again, since I don't have access to MySQL from here) SET @color1 = "Blue"; SET @color2 = "Green"; SELECT ca.Manufacturer, @color1, @color2 FROM cars ca, car_color_links l1, colors c1, car_color_links l2, colors c2 WHERE ca.ID = l1.car_ID AND l1.color_ID = c1.id AND c1.name = @color1 AND ca.ID = l2.car_ID AND l2.color_id = c2.id AND c2.name = @color2; > > 2. Select which other colors of cars, a manufacturer which match > > criteria 1 above, has. > > i.e. Green AND Blue should return Black (Volvo), > > SELECT DISTINCT ca.Manufacturer, co.Name FROM car_color_links as l > JOIN colors as co ON (co.ID = l.color_ID) > JOIN cars as ca ON (ca.ID = l.car_ID) > WHERE co.Name "Green" AND co.Name "Blue" Hmm, does this only return one row for each Manufacturer? I'll have to check it out. Well at least I know I can't use the same trick here as I did in my first query, since I don't know how many colors I could get returned. /mac -------------------------------------- Protect yourself from spam, use http://sneakemail.com
--------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php