2017-02-11 6 views
1
die mehrere ID

Erste TabelleSQL JOIN

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

Zweite Tabelle

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

Wie kann ich das mitmachen, so dass ich so etwas wie dieses

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

Die hier wirkliche Lösung ist Ihre nicht-normalisierte Tabellenentwurf zu beheben. –

Antwort

3

Um es richtig zu machen, eine weitere Tabelle hinzu:

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

Es enthält einen Datensatz für jede Kategorie ein Produkt hat.

1

erste Tabelle ist nicht Normalisieren

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

Erste Normalisieren diese Tabelle als

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

Zweite Tabelle

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

MySQL Syntax als: „SELECT T1.product_name, T2.category_name Von FIRST_TABLE AS T1, SECOND_TABLE WIE T2 WHERE T1.category_ids = T2.category_id "

Sie Dies gibt das Ergebnis als:

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