сгруппировать, но сохранить product_id всех записей где-то - PullRequest
0 голосов
/ 16 июня 2011

Вот мой запрос

select p.product_id, ts.name as my_name, ss.step_number, p.specs, SUM(p.price),  ssp.class_id
from optional_system_step  as ss
join system as s on s.system_id=ss.system_id
join category_description  as cd on cd.category_id=ss.category_id
join optional_system_step_product as  ssp on ss.system_step_id=ssp.system_step_id
join product as p on  p.product_id=ssp.product_id
join product_description as pd on  pd.product_id=p.product_id
join template_step as ts on  (ts.template_id=s.optional_template_id and ts.step_number=ss.step_number)
where s.system_id = '15' 
GROUP BY ssp.class_id, ss.step_number
order by ss.step_number, ssp.class_id; 

, который возвращает правильную сумму, но возвращает только один из идентификаторов product_id

78  sdzvzcxv    1       4047.0000   1
143 sdzvzcxv    1       628.0000    2
59  sdzvzcxv    1       962.0000    3
57  another 2       638.0000    1
134 another 2       858.0000    2
62  another 2       548.0000    3
98  xzcvzxc 3       863.0000    1
106 xzcvzxc 3       634.0000    2
98  xzcvzxc 3       1168.0000   3

Мне было интересно, есть ли способ сбора идентификаторов product_idперед группировкой и добавьте их в поле, разделив запятую

78,55,66    sdzvzcxv    1       4047.0000   1
143,77,88   sdzvzcxv    1       628.0000    2
59,77,88    sdzvzcxv    1       962.0000    3
57,77,88    another 2       638.0000    1
134,77,88   another 2       858.0000    2
62,77,88    another 2       548.0000    3
98,77,890   xzcvzxc 3       863.0000    1
106,76,88   xzcvzxc 3       634.0000    2
98,57,87    xzcvzxc 3       1168.0000   3

1 Ответ

2 голосов
/ 16 июня 2011

В MySQL вы можете использовать GROUP_CONCAT(), чтобы вернуть все сгруппированные значения как одно поле.Тем не менее, функция имеет ограничение максимальной длины по умолчанию, равное 1024 символам, после чего она просто тихо отбрасывает любые дополнительные значения, которые могли появиться.Вы можете увеличить лимит с помощью системной переменной group_concat_max_len.

Конечно, в вашем примере запроса вы фактически не группируете поле p.product_id, так что это, вероятно, выигралоне имеет эффекта, который вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...