2013-01-24 48 views
0

我在博客網站工作,並停留在該另一個表:搜索存儲陣列中的MySQL表colunm再加入基於結果

MySQL的

  1. cat_list」表中包含列: cat_idcat_name(14項),
  2. post」表中有若干列,其中category就是其中之一,我需要存儲類別ID在博客文章被標記,以。類別標識存儲在array(19820,83729)中。 [因爲一篇博客文章可以在多個類別被標記]

我是想通過一個類別ID搜索「post」,並加入「cat_list」來取回這些cat name。 請幫我做到這一點,或者是否有其他的替代數據庫設計我應該考慮?

+0

是你的問題解決? –

回答

0

如果您的文章可以標記爲多個類別,您的表格模型是錯誤的。您需要博客帖子和類別之間的關聯表。從post表中刪除category id並創建表post-category,並列post-idcategory-id。然後在這兩列上添加索引,以加快在兩個方向上的搜索(按類別或按帖子)。

+0

要詳細說明@regilero答案,您需要確保帖子和類別具有多對一的關係。換句話說,您的帖子只能有一個類別,但每個類別都可以有多個帖子。如果帖子可以有多個類別,那麼你將有一個多對多的關係。在這種情況下,您需要創建橋表(post_to_category)。在這張表中你存儲了post_id和category_id。如果帖子1有兩個類別(cat1和cat3),則post_to_category表中的條目將變爲1 | 1和1 | 3(post_id | category_id)。希望這可以幫助。 –

0

試試這個:

SELECT c.cat_name FROM post as p 
LEFT JOIN cat_list AS c 
ON c.cat_id = p.cat_id 
WHERE p.post_id = "3" 

的樣本數據:

CREATE TABLE cat_list(
    cat_id int auto_increment primary key, 
    cat_name varchar(30) 
); 

CREATE TABLE post (
    post_id int auto_increment primary key, 
    cat_id int, 
    post varchar(30) 
); 

INSERT INTO cat_list (cat_name) 
VALUES ("cat1"),("cat2"), ("cat3"),("cat4"),("cat5"),("cat6"),("cat7"),("cat8"); 

INSERT INTO post (cat_id, post) 
VALUES (1,"jnkljlkajlkjaoiuweiuoi"), (1,"wuoieuoiuoidudjhkj"), (2,"eiuuqueiuriewuqyiuu"), (8,"vzbvbxvnbxmnbmn nmncmn"); 

SQL FIDDLE DEMO

更改後的ID選擇類別。

+0

@Debraj Debbarma你有沒有試過我的答案?讓我知道我是否可以幫助你。 –