soccerstar_23 Posted September 18, 2006 Share Posted September 18, 2006 Hello,I'm creating a photo gallery and for individual photos, you may "tag" one. For example, when someone makes a stupid face in the photo, you may give the photo the "Funny" tag. Each photo may have multiple tags (e.g. "Funny", "Stupid", "Idiot"). To let users add a tag to a photo, I give them a "<SELECT>" box to choose from a list of existing tags. Obviously, if the photo already has the "Stupid" tag, I do not want tag showing up in the dropdown list.I'm having problems coming up with a good MySQL statement to get the information. The tables are as follows:MEDIA--------------media_idmedia_title......MEDIA TAG--------------media_idtag_iduser_idUSERS--------------user_iduser_handle....Seeing as tags can be used on multiple photos, the JOIN seems to be pretty complicated.I've tried a variation of the following with incorrect results:SELECT * FROM dg_tags t LEFT JOIN (dg_media_tags mt)ON (t.tag_id = mt.tag_id AND mt.media_id != 6)ORDER BY t.tag_titleWhat can I do to get the select box of "tags" that arent' in use for a specific photo?Thank you! Quote Link to comment Share on other sites More sharing options...
btherl Posted September 18, 2006 Share Posted September 18, 2006 SELECT * FROM dg_tags tLEFT JOIN (dg_media_tags mt)ON (t.tag_id = mt.tag_id AND mt.media_id != 6)WHERE mt.tag_id IS NULLORDER BY t.tag_titleHow about this? The logic is that the left join will put NULL for every column in mt where there is no corresponding tag in t. So the "IS NULL" condition will give you only these.If you can't get it working, use a subquery which selects all the currently set tags, and specify "where tag_id not in (subquery)" Quote Link to comment Share on other sites More sharing options...
fenway Posted September 18, 2006 Share Posted September 18, 2006 Looks good... I'm confused about the != condition. Quote Link to comment Share on other sites More sharing options...
soccerstar_23 Posted September 19, 2006 Author Share Posted September 19, 2006 Thanks for your help. I had to use a subquery to get this to work but again, thanks for your help! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.