2016-11-30 10 views
0

私はメインテーブル "articles"(artID、artName)を持つMySQLデータベースを持っています。記事テーブルからカテゴリへの関係を持つMySQLクエリ

実際のタイトルとID(catID、catTitle)のある「カテゴリ」の表もあります。

次に、接続ID(artID、catID)が格納されているテーブル「articles_categories」が存在します。

MySQLに関するいくつかの学習の後、私は少なくとも適切な関連する行を持っています。

しかし、商品に1つ以上のカテゴリがある可能性があります。

artID,catID 

0001,0100 
0001,0105 
0001,0120 

0002,0104 
0002,0120 

0003,0110 

0004,0205 
0004,0250 
0004,0401 

をそして、これは私が、残念ながら得るものです:

テーブルarticles_categoriesは、例えば行を持つことができます。私はより多くの1つのカテゴリに接続されてより多くの1つの行になる各記事を取得します。

しかし、記事ごとに1行しかなく、カテゴリは1つのフィールドにセミコロンで区切ります。

これは私が得るものです:

Article, Category 
"apple", "fruit" 
"apple", "food" 
"pepsi","drink" 
"pepsi","nonalcolic" 
"pepsi","softdrink" 
"chair","wood" 
"chair","furniture" 
"chair","kitchen" 

しかし、私が手に入れたいものをこの:ここ

Article, Category 
"apple", "fruit, food" 
"pepsi","drink, nonalcolic, softdrink" 
"chair","wood, furniture, kitchen" 

は私のSQLクエリです:あなたが必要

SELECT a . * , ac . * , c . * 
FROM articles a, articlescategories ac, categories c 
WHERE a.artID = ac.artID AND ac.catID = c.catID 
+0

sqlfiddleの記事とカテゴリテーブルのサンプルデータを教えてください。 – Faisal

答えて

0

group_concatを使用する

SELECT a . * , GROUP_CONCAT(c.category_name) 
FROM articles a, articlescategories ac, categories c 
WHERE a.artID = ac.artID AND ac.catID = c.catID 
GROUP BY a.artID 

カテゴリ名はあなたのカテゴリ名です。カテゴリ名でこれを変更する必要があります

関連する問題