6

フィールドをグループ化したいが、次の列のすべての行を表示したいremain

グループ化せずに現在の出力を次に示します。

ここに画像の説明を入力してください

そしてグループで出力:

ここに画像の説明を入力してください

そして、私がグループ化するときにこれが欲しい:

ここに画像の説明を入力してください

これがmysqlクエリです:

SELECT staff.name,
  staff.designation_id_designation,
  staff.status_id_status,
  Concat_Ws('=', leave_remain.leave_type_id_leave_type, leave_remain.days) AS
  remain
FROM staff INNER JOIN
  leave_remain ON staff.id_staff = leave_remain.staff_id_staff
GROUP BY staff.name    
4

3 に答える 3

9

使用するGROUP_CONCAT

SELECT  staff.name,
        staff.designation_id_designation,
        staff.status_id_status,
        GROUP_CONCAT(Concat_Ws('=', leave_remain.leave_type_id_leave_type, leave_remain.days)) AS remain
FROM    staff 
        INNER JOIN leave_remain 
            ON staff.id_staff = leave_remain.staff_id_staff
GROUP   BY staff.name, staff.designation_id_designation, staff.status_id_status  

他のリンク

于 2013-02-11T05:55:43.100 に答える
1

これをTRyして、'''で区切ってgroup_contactを使用する必要があります。

SELECT staff.name,
  staff.designation_id_designation,
  staff.status_id_status,
  GROUP_CONCAT(Concat_Ws('=', leave_remain.leave_type_id_leave_type, leave_remain.days) SEPARATOR ' ') AS remain
FROM staff 
INNER JOIN
  leave_remain 
ON 
staff.id_staff = leave_remain.staff_id_staff
GROUP BY staff.designation_id_designation,
         staff.name,
         staff.status_id_status;
于 2013-02-11T06:00:30.480 に答える
1

これを試して:

SELECT staff.name,
  staff.designation_id_designation,
  staff.status_id_status,
  GROUP_CONCAT(Concat_Ws('=', leave_remain.leave_type_id_leave_type, leave_remain.days) SEPARATOR ' ') AS remain
FROM staff INNER JOIN
  leave_remain ON staff.id_staff = leave_remain.staff_id_staff
GROUP BY staff.designation_id_designation,
         staff.name,
         staff.status_id_status;
于 2013-02-11T05:54:19.810 に答える