wondering how i can create a tagging system in php and with a mysql database, my initial thoughts were to create a row in the table where the articles are stored, named tags, and list the tags seperated by commas, but i am not sure how i can create a query that searches for matching tags, i dont want to have to query every article everytime someone clicks a tag. can anyone help?
2 Answers
You're describing a many-to-many relationship between Articles and Tags. You'd want to use an intermediate junction table to resolve that relationship.

Now, to find all articles that match a selected tag:
SELECT a.article_title
FROM Tag t
INNER JOIN Article_Tag_Xref atx
ON t.tag_id = atx.tag_id
INNER JOIN Article a
ON atx.article_id = a.article_id
WHERE t.tag_name = 'SelectedTagName'
2 Comments
Samuel
What about finding all articles that match all tags of a given list?
PirateApp
seems like there are 3 ways to do this 1) denormalized table with all tags as part of main table 2) 2 tables with the main have item id and second having item id and tag where both item id and tag are indexed and 3) the structure you described