2017-02-11 59 views
1

第一個表SQL加入多個ID的

|product_name | category_ids | 
|---------------------------------| 
|- apple  | 1, 2   | 
|- extra_apple | 1, 3   | 

二表

|category_id | category_name | 
|---------------------------------| 
|- 1   | fruit   | 
|- 2   | cheap   | 
|- 3   | expensive  | 

我怎樣才能加入這個,所以我得到這樣的事情

|  product_name |  category_names | 
-------------------------------------------- 
|  apple   |  fruit, cheap  | 
|  extra_apple |  fruit, expensive | 
+2

這裏真正的解決方法是修復你的不規範化的表設計。 –

回答

3

要正確添加另一個表格:

product_categories table 
------------------------ 
product_id 
category_id 

它包含產品所具有的每個類別的一條記錄。

1

第一個表是不歸

|product_name | category_ids | 
|---------------------------------| 
|- apple  | 1, 2   | 
|- extra_apple | 1, 3   | 

首先規範化此表

|product_name | category_ids | 
|---------------------------------| 
|- apple  | 1    | 
|- apple  | 2    | 
|- extra_apple | 1    | 
|- extra_apple | 3    | 

二表

|category_id | category_name | 
|---------------------------------| 
|- 1   | fruit   | 
|- 2   | cheap   | 
|- 3   | expensive  | 

MySQL的語法爲:「選擇T1.product_name,T2.category_name FROM FIRST_TABLE AS T1,SECOND_TABLE AS T2 WHERE T1.category_ids = T2.category_id「

這會給你結果爲:

|  product_name |  category_names | 
-------------------------------------------- 
|  apple   |  fruit   | 
|  apple   |  cheap   | 
|  extra_apple |  fruit   | 
|  extra_apple |  expensive  |