Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / помогите с запросом / 6 сообщений из 6, страница 1 из 1
27.09.2018, 09:10
    #39709014
tadeyiloda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
idorder_id num11test122test232test342test453test563test6
задача- если count(order_id)<2 то num не трогаем
иначе нужно добавить к num порядковый номер строки с учетом order_id, например если 2 строки с одинаковым order_id то порядковые номера 1и 2
в итоге надо получить
idorder_id num11test122test2-132test3-242test4-353test5-163test6-2
...
Рейтинг: 0 / 0
27.09.2018, 09:34
    #39709028
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
...
Рейтинг: 0 / 0
27.09.2018, 11:31
    #39709158
tadeyiloda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
а как мне пронумеровать num с учетом группировки? ведь там не будет по порядку а например 1,2,3 затем 1,2
...
Рейтинг: 0 / 0
27.09.2018, 12:26
    #39709202
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
tadeyilodaа как мне пронумеровать num с учетом группировки?Ознакомьтесь теперь со вторым постом в той же ссылке - там записи нумеруются именно в группе, а не по всему набору данных.
...
Рейтинг: 0 / 0
27.09.2018, 13:11
    #39709239
tadeyiloda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
спасибо разобрался
вот что в итоге получилось
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
update product p JOIN 
(
SELECT p.*,  CONCAT(number, '-', if(@typex=p.id_order, -- если "type_a" не изменился
@rownum:=@rownum+1, -- то увеличить счетчик
@rownum:=1+least(0,@typex:=p.id_order))) AS rown -- иначе скинуть счетчик на 1
from product p , (select @rownum:=1, @typex:='_') zz
where id_order in (SELECT id_order  FROM `product`  GROUP by id_order having count(id_order)>1)
) o on  p.id=o.id
set p.number=o.rown
...
Рейтинг: 0 / 0
30.09.2018, 20:42
    #39710645
algrach
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с запросом
Как вариант

Код: sql
1.
2.
3.
4.
5.
6.
with 
t1 as (select *, count(num) OVER(partition by order_id order by id)q1, count(num) OVER(partition by order_id)q2 from tests)
update tests t join
(select id, order_id, if(q2>1 , CONCAT(num, '-', q1) , num)new_num from t1)t2
on t.id = t2.id 
set t.num = t2.new_num;
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / помогите с запросом / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]