2017-02-11 3 views
1

Первая таблицаSQL объединить несколько удостоверения личности

|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 Синтаксис как: «SELECT 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  | 
Смежные вопросы