質問

たとえば私の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.

  1. この予想されるMySQL行?
  2. がんの予想出力を使用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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top