Mike,

You're in the right place. If I understand your requirement correctly,
you want entries which...
 match on id,
 match a selection from ('Mustang' or 'Beetle'),
 match multiple values in tags (eg 'red' and 'car').

Here's one solution:

SELECT p.photo, t.tag
FROM pics p
INNER JOIN tags c USING (picid)
WHERE p.photo IN('Mustang','Beetle')
 AND t.tag IN('car','red');

Here's a slightly different-looking version of the same answer:

SELECT
 p.photo,
 GROUP_CONCAT(t.tag)
FROM pics p
INNER JOIN tags c USING (picid)
WHERE p.photo IN('Mustang','Beetle')
 AND t.tag IN('car','red')
GROUP BY p.photo;

PB

-----

Mike Martin wrote:

Hi List!

Please forgive me if I'm asking the wrong list (and please guide me to
the right place).

I have two tables (simplified for this example) "pics" and "tags" like so:

pics:
picid   photo
1    Mustang
2    Apple
3    Rock
4    Beetle

tags:
tagid  picid    tag
1        1         Car
2        1         Red
3        2         Red
4        3         Quartz
5        4         Car
6        2         Food
7        1         1979

I'm trying to craft a query which will join the tables by the picid
column and return the entries which match multiple "tags". For
instance I want to query for items that are both "red" and "car" (to
get the records: Mustang and Beetle in this case).

I assume I should start with something like:

SELECT * FROM pics JOIN tags ON pics.picid=tags.tagid WHERE  .....

and that's where I get stuck. tag="red" AND tag="car" isn't right and
neighter is tag="red" OR tag="car".

I think this should be simple ... but I'm too new to SQL. I've messed
around with GROUPs, UNIONs, etc. but I'm just out of my league. Can
someone help, or point me to a good tutorial/explanation that would
help?

Thanks!

MikeMartin



--
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.371 / Virus Database: 267.14.17/226 - Release Date: 1/10/2006


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

Reply via email to