2011-09-27 58 views
0

我有以下表:MySQL的選擇行,其中在另一表中的值在一個場匹配值

  • tbljobpost與字段JOB_ID INT,JOB_TITLE VARCHAR(50),skill_cat_id VARCHAR(50)
  • tblappskills與字段app_control中等,skill_cat_id VARCHAR(50)

tbljobpost:

+-------------------------------------+ 
| job_id | job_title | skill_cat_id | 
+-------------------------------------+ 
| 1  | Programmer | 1,2,3,4,5,6,7 | 
+-------------------------------------+ 

tblappskills: 

+-----------------------------+ 
| app_control | skill_cat_id | 
+-----------------------------+ 
| 1   | 1,2,4,5,6  | 
| 2   | 1,2,3,7,4  | 
| 3   | 1,2,3,4,5,6,7 | 
| 4   | 7,1,4,5,6,2,3 | 
+-----------------------------+ 

如何查詢或過濾與tbljobpost以逗號分隔的skill_cat_id相同的tblappskills? 而結果會是這樣的:

+-----------------------------+ 
| app_control | skill_cat_id | 
+-----------------------------+ 
| 3   | 1,2,3,4,5,6,7 | 
| 4   | 7,1,4,5,6,2,3 | 
+-----------------------------+ 

回答

1

您的解決方案不適合first normal form

,可以儲存像這樣在不同的細胞技能類別:

+----------------------------+ 
| app_control | skill_cat_id | 
+----------------------------+ 
| 1   | 1   | 
| 1   | 2   | 
| 2   | 1   | 
| 4   | 4   | 
+----------------------------+ 

然後,您可以輕鬆地JOIN這些表格並選擇與您想要的值匹配的行。 app-control-id在表格中出現不止一次並不重要。但是,如果您決定將其他數據添加到該表格中,則應該在單獨的表格中執行以避免冗餘,如下所示:

您的新表格(包含有關app-control的詳細信息)與我上面提到的表格有關如1:(0..N)。這很難解釋,但易於設計。如果你學習上面提到的正常形式,你會很容易理解這一點。

+0

你能給我一個例子在我的問題..我有點困惑.. tnx –

相關問題