2016-06-28 12 views
0

私は製品を取得し、関連するカテゴリをコンマ区切りのリストとして含めようとしています。以下は私が試したものですが、1つの製品しか返しません。 LEFTとLEFT OUTER結合を試みましたが、どちらもうまくいきませんでした。何か案は?すべての製品とそのカテゴリを取得するためのMySQLクエリ

SELECT 'U' as ACTION 
     , product_id 
     , GROUP_CONCAT(PC.category_id SEPARATOR ', ') as Categories 
FROM Products P LEFT JOIN Product_Category PC 
      ON PC.product_id = P.product_id 

答えて

1

例-----------------

SELECT 'U' as ACTION, product_id, GROUP_CONCAT(PC.category_id SEPARATOR ', ')  as Categories 
FROM Products P LEFT JOIN Product_Category PC 
ON PC.product_id = P.product_id group by P.product_id; 

によってグループを追加-----------

select * from calls; 
+----+------------+---------+ 
| id | date  | user_id | 
+----+------------+---------+ 
| 1 | 2016-06-22 |  1 | 
| 2 | 2016-06-22 | NULL | 
| 3 | 2016-06-22 | NULL | 
| 4 | 2016-06-23 |  2 | 
| 5 | 2016-06-23 |  1 | 
| 6 | 2016-06-23 |  1 | 
| 7 | 2016-06-23 | NULL | 
+----+------------+---------+ 
7 rows in set (0.03 sec) 

mysql> select * from payments; 
+----+------------+---------+-------+ 
| id | date  | user_id | value | 
+----+------------+---------+-------+ 
| 1 | 2016-06-22 |  1 | 10 | 
| 2 | 2016-06-22 |  3 | 15 | 
| 3 | 2016-06-22 |  4 | 20 | 
| 4 | 2016-06-23 |  2 | 100 | 
| 5 | 2016-06-23 |  1 | 150 | 
+----+------------+---------+-------+ 
5 rows in set (0.00 sec) 

mysql> select c.user_id,group_concat(p.value) from calls c inner join payments p on p.user_id=c.user_id group by c.user_id; 
+---------+-----------------------+ 
| user_id | group_concat(p.value) | 
+---------+-----------------------+ 
|  1 | 10,150,10,150,10,150 | 
|  2 | 100     | 
+---------+-----------------------+ 
2 rows in set (0.00 sec) 
+0

ありがとう、それは働いた:) – user3025605

+0

それは他の人に役立つと回答したようにマークしてください –

+0

はい、それは5分前に答えをマークすることはできません.. :) – user3025605

1

GROUP_CONCAT関数は1つの集計関数であり、GROUP BY節を使用しています。 SELECTステートメントにGROUP BYがない場合は、すべての検索結果が使用されます。

関連する問題