GROUP_CONCATとLEFT_JOIN問題になるすべての行を返
-
11-09-2019 - |
質問
たとえば私のDBスキームは以下の通りで:
T_PRODUCT
id_product (int, primary)
two entries: (id_product =1) , (id_product =2)
T_USER
id_user (int, primary)
id_product (int, foreign key)
name_user (varchar)
two entries: (id_product=1,name_user='John') , (id_product=1,name_user='Mike')
がしかった最初のクエリはすべての商品ユーザーが設定されてい)を取得します:
SELECT T_PRODUCT.id_product, T_USER.name_user
FROM T_PRODUCT
LEFT JOIN T_USER on T_USER.id_product = T_PRODUCT.id_product;
>>
id_product name_user
1 John
1 Mike
2 NULL
見えています。今したい場合は同じものを除いて製品ライン処理してくれるかどうかは,ユーザ名が設定されていユーザー、そうでない場合はNULL):
SELECT T_PRODUCT.id_product, GROUP_CONCAT(T_USER.name_user)
FROM T_PRODUCT
LEFT JOIN T_USER on T_USER.id_product = T_PRODUCT.id_product;
>>
id_product name_user
1 John,Mike
**expected output**:
id_product name_user
1 John,Mike
2 NULL
がない場合はユーザーのための製品は、GROUP_CONCATを防止mysqlから製造ラインを本製品もあり LEFT JOIN.
- この予想されるMySQL行?
- がんの予想出力を使用GROUP_CONCATも機能しているのでしょうか。
解決
ああ、私の答え:
を忘れるわけにはゆきません グループ 条項が GROUP_CONCAT.私た GROUP BY T_PRODUCT.id_product
私の秒を返します。
私は質問したりしていてとなになれたら嬉しいです。
編集:
から この答え,きっかけになるかもしれないともできますのSQLモード ONLY_FULL_GROUP_BY
力にMySQLをスローエラーの場合、グループがないか、または間違っています。
他のヒント
代わりに、あなたは、サブクエリを使用することができ、パフォーマンスのためだけのテスト
SELECT
T_PRODUCT.id_product,
(SELECT GROUP_CONCAT(T_USER.name_user)
FROM T_USER
WHERE T_USER.id_product = T_PRODUCT.id_product
)
FROM T_PRODUCT
所属していません StackOverflow