0

重複する列データをグループ化する方法を探しています。
次のようなデータを含むテーブルがあります。

-------------------------------------------
ID  | locationId | day | open     | close
-------------------------------------------
1   | 1213       | Wed | 10:00 am | 4:30 pm
-------------------------------------------
2   | 1213       | Thr | 10:00 am | 4:30 pm
-------------------------------------------
3   | 1213       | Fri | 10:00 am | 4:30 pm
-------------------------------------------
4   | 1213       | Sat | 10:00 am | 5:30 pm
-------------------------------------------

group_concatlocationId 1213 の情報を返すために使用しています

Wed: 10:00 am-04:30 pm,Thu: 10:00 am-04:30 pm,Fri: 10:00 am-04:30 pm,Sat: 10:00 am-05:30 pm

group_concat または別の関数/クエリを使用して、重複する開始時間と終了時間をグループ化し、次のようなデータを返す方法はありますか?

Wed,Thr,Fri: 10:00 am-04:30 pm,Sat: 10:00 am-05:30 pm

あるいは

Wed-Fri: 10:00 am-04:30 pm,Sat: 10:00 am-05:30 pm

以下は、私が使用しているSQLコードです。

SELECT appdata.nameShort, 
group_concat(distinct concat(appdatahours.`day`,": ", appdatahours.open, "-", 
appdatahours.close)) as hours
FROM appdata
LEFT JOIN appdatalocations on appdatalocations.listingId = appdata.id
LEFT JOIN appdatahours on appdatahours.locationId = appdatalocations.id
GROUP BY appdata.id
4

1 に答える 1

1

これを試してください(派生テーブルを使用します):

select locationId, group_concat(day_group) from
(
    SELECT
    locationID, concat(group_concat(`day`),": ", open, "-", close) as day_group
    FROM tableB
    GROUP BY locationID, open, close
) dayGroup;

ここのsqlfiddle:http://sqlfiddle.com/#!2/c19c5/1/0

于 2012-10-10T15:37:01.990 に答える