まずは現在のクエリを表示します。左結合の最後と最初の行を選択し、左結合を列としていくつかの行を選択します
SELECT u.id, u.username, GROUP_CONCAT(DISTINCT up.weight) as weights, GROUP_CONCAT(DISTINCT pd.type_change, ':', pd.sum_type_change) as statistics
FROM user u
LEFT JOIN
(SELECT up.weight, up.user_id FROM user_parameter up WHERE up.date BETWEEN '2015-10-10 00:00:00' AND '2017-10-10 00:00:00' ORDER BY up.user_id, up.date ASC) up
ON u.id = up.user_id
LEFT JOIN
(SELECT pd.type_change, count(pd.id) as sum_type_change, dd.user_id FROM diet_day dd
LEFT JOIN product_day pd ON dd.id = pd.diet_day_id
WHERE dd.date_start BETWEEN '2015-10-10 00:00:00' AND '2017-10-10 00:00:00' GROUP BY dd.user_id, pd.type_change) pd
ON u.id = pd.user_id
GROUP BY u.id
これは正常に動作しますが、私はこれに加えて、代わりに
GROUP_CONCAT(DISTINCT up.weight)
の最初と最後のup.weightを減算する必要があり、私はこれはいつものように文字列を返す
GROUP_CONCAT(DISTINCT pd.type_change, ':', pd.sum_type_change)
を変更する必要がありますこの1:カウント2:カウント3:カウント4:カウント 1つの列(group_concat)ではなく、4つの新しい列が必要です。
これをすべてmysqlクエリで行うことは可能ですか?
あなたは、通常のSQLの列の可変数を返すことができません参照してください。 – Barmar