2017-03-17 8 views
0

I持っている4台複数のグループConcate MySQLで複数のテーブルを結合

trxn_tbl:

 
works_id works_date 
1   3/17/2017 
2   3/19/2017 
3   3/18/2017 

apps_txn_tbl:

 

id works_id apps_name 
1 1   JoinBDApps 
2 1   PMS 
3 1   CADET COLLEGE 
4 2   JoinBDApps 
5 2   PMS 
6 2   CADET COLLEGE 
7 3   JoinBDApps 
8 3   PMS 
9 3   CMH 

work_loc_trxn_tbl:

 
id works_id loc 
1 1   DC 
2 2   AITSO 
3 3   DR 

works_type_txn_tbl:

 
    id works_id works_type 
    1 1   Trobleshooting 
    2 1   Software Upgrade 
    3 2   Trobleshooting 
    4 2   License Key Update 
    5 3   Trobleshooting 
    6 3   License Key Update 

私は、クエリのMySQLサイードを実行します。 MySQLは言った:ドキュメント

1055 - SELECTリストの式#3があるGROUP BY句ではなく、非凝集列 'dcapp_db.work_loc_txn_tbl.loc' を含みます機能的にはGROUP BY句の列に依存しません。これはsql_modeの= ONLY_FULL_GROUP_BY

と互換性がありません。しかし、私はこのタイプ欲しい: が

 
works_id Works_date work_type       appsname          loc 
1   3/17/2017 Trobleshooting, software upgrade JoinBDapps, PMS, CADET COLLEGE      DR 
2   3/19/2017 Trobleshooting, License Key Update JoinBDapps, PMS, CADET COLLEGE     AITSO 
3   3/18/2017 Trobleshooting, License Key Update  JoinBDApps, PMS, CMH       DR

問題であり、私はテーブルのシステムを変更したり、嘆願は、私を助ける問い合わせる必要です .... 私のクエリがあるが、「私のクエリがあります:

 
SELECT trxn_tbl.works_id, trxn_tbl.works_date,work_loc_txn_tbl.loc,GROUP_CONCAT(works_type_txn_tbl.works_type SEPARATOR ',')as worktype,GROUP_CONCAT(apps_txn_tbl.apps_name SEPARATOR ',')as appname FROM trxn_tbl JOIN works_type_txn_tbl on works_type_txn_tbl.works_id=trxn_tbl.works_id JOIN apps_txn_tbl on apps_txn_tbl.works_id=trxn_tbl.works_id JOIN work_loc_txn_tbl on work_loc_txn_tbl.works_id=trxn_tbl.works_id GROUP BY trxn_tbl.works_id; 

答えて

0
  1. works_id、works_date、LOCはGROUP BYに追加する必要があります。
  2. 1つのクエリで2つのGROUP_CONCATを使用しましたが、このクエリではGROUP BYまでの列数が ではないため、GROUP_CONCATには の内容が重複しています。

これを試してみてください:それは作品

SELECT 
    trxn_tbl.works_id, 
    trxn_tbl.works_date, 
    work_loc_txn_tbl.loc, 
    GROUP_CONCAT(
     DISTINCT works_type_txn_tbl.works_type SEPARATOR ',' -- add DISTINCT 
    ) AS worktype, 
    GROUP_CONCAT(
     DISTINCT apps_txn_tbl.apps_name SEPARATOR ',' -- add DISTINCT 
    ) AS appname 
FROM 
    trxn_tbl 
INNER JOIN works_type_txn_tbl ON works_type_txn_tbl.works_id = trxn_tbl.works_id 
INNER JOIN apps_txn_tbl ON apps_txn_tbl.works_id = trxn_tbl.works_id 
INNER JOIN work_loc_txn_tbl ON work_loc_txn_tbl.works_id = trxn_tbl.works_id 
GROUP BY 
    trxn_tbl.works_id, 
    trxn_tbl.works_date, 
    work_loc_txn_tbl.loc 

SQLFIDDLE

+0

感謝を...... –

+0

あなたの提案が私にはとても便利です –

+0

それは私のクエリで多くのグループの連結を追加することは可能ですか?私は1つの質問で6または6つのグループconcateが必要です...可能ですか? –

関連する問題