2011-09-18 19 views
0

我期待建立一個標籤系統使用這種標準化的表結構:的標籤數據庫MySQL查詢幫助

Table: Item 
Columns: ItemID, Title, Content 

Table: Tag 
Columns: TagID, Tag_Name 

Table: ItemTag 
Columns: ItemID, TagID 

其中項目表是我的基本信息表,我想要做的就是有一個額外的單一文本字段在我的表單中,並要求用戶插入他們的標籤,用逗號分隔。沒有什麼不尋常的東西可以在網上看到。

什麼,我需要幫助是那些需要用逗號分隔的輸入和查詢:

  1. 檢查,他們還沒有在標籤表
  2. 添加它們,如果它們不存在存在(其中無論如何tag_id是一個自增量字段)
  3. 鏈接輸入的標籤ID(無論是新的還是現有的)與我的一般信息表中的ItemID。

有人可以幫我循環爲每個逗號分隔值嗎?

感謝 丹

回答

0

拆分觸摸數據庫,讓你的標籤名稱的數組之前/\s*,\s*/標籤列表。然後標準化您的標籤:強制他們使用大寫字母,小寫字母,標題大小寫或適合您喜歡的任何一種情況。

現在您已經有一些標籤準備好進入數據庫了。不要打擾他們是否已經存在;相反,請爲Tag.Tag_Name添加一個唯一索引,然後繼續操作並從標籤列表中插入所有標籤,並忽略唯一違規錯誤。

現在,你必須在數據庫中所有的標籤,你可以使用INSERT ... SELECT填充ItemTag,每個標籤要做到這一點:

insert into ItemTag (ItemId, TagID) 
select $item_id, TagID 
from Tag 
where Tag_Name = $tag 

其中$item_id是該項目的問題,$tag的ID是您附加到該項目的特定標籤。

+0

謝謝MU,我會對此有所瞭解。可能需要我一段時間:) – Dan