Delicious style Tags table

From: Date: Thu, 11 Sep 2008 11:41:05 +0000
Subject: Delicious style Tags table
Groups: php.db 
Request: Send a blank email to php-db+get-45388@lists.php.net to get a copy of this message
So I am having difficulty thinking of how to make this select query. I have two tables that mimic tags similar to flickr, delicious etc. They are defined below CREATE TABLE IF NOT EXISTS taggings ( id int(11) unsigned NOT NULL auto_increment, tag_id int(11) NOT NULL, taggable_id int(11) NOT NULL, taggable_type varchar(255) collate utf8_unicode_ci NOT NULL, PRIMARY KEY (id), UNIQUE KEY index_taggings_on_tag_id_and_taggable_id_and_taggable_type (tag_id,taggable_id,taggable_type) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; CREATE TABLE IF NOT EXISTS tags ( id int(11) NOT NULL auto_increment, name varchar(255) collate utf8_unicode_ci NOT NULL, PRIMARY KEY (id), UNIQUE KEY unique_name (name) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; Just to explain the taggings table, tag_id points directly to the tag table, taggable_id is the id of the item you have tagged in another table. The taggable_type is string reference to the table that the item you tagged sits in, so in the exaplme below it would be a table called 'recipes' So, say you have 2 items each with the same tag but one item as two tags. For instance a two soup Recipes could be tagged with 'soup' but only one of them is vegetarian. So Recipe 1 has the tag 'soup' and recipe 2 has 'soup' and 'vegetarian' I want to be able to pass my SQL the word 'soup' and it return both records in taggings table which will point to both recipes. However if I want just vegetarian soups then I only want it to return the one record. I hope that is understandable What I have currently (below) is just a simple join. Which obviously doesn't work. I just cant think how to piece these two tables together to get the records I want. SELECT tags.*, taggings.* FROM tags JOIN taggings ON tags.id = taggings.tag_id WHERE (name IN ('vegetarian', 'soup')) -- View this message in context: http://www.nabble.com/Delicious-style-Tags-table-tp19433010p19433010.html Sent from the Php - Database mailing list archive at Nabble.com.

« previous php.db (#45388) next »