Вложенные циклы MySQL

123
siv1987
На сайте с 02.04.2009
Offline
427
#11

sidorka, что такое "внешний цикл"? И что такое внутренний цикл, раз есть внешний? Что такое "возможности mysql"? Пользовательские функции и процедуры? Так и пишите. Пишите нормально чтобы люди вас понимали, а то пока нихера не понятно.

sidorka
На сайте с 17.08.2012
Offline
211
#12

Я не профи к сожалению - артельщик-раздолбай.

Внешний цикл - цикл на любом языке, в моем случае пхп, в котором я меняю условия выборки из БД.

Внутренний цикл - в данном случае, как раз тот хитрый запрос с накопительной переменной.

Возможности мускула - если тот же самый апдейт БД делать по одной строчке, ввести внешнюю переменную для накопления результата, то процесс растягивается на световые годы - объем выборки из БД больше ляма строк. А тем способом, который я привел, с курсором - полночи, уже жить можно с этим, без курсора - не получилось проверить - работало некорректно, но думаю в пару суток уложился бы.

---------- Добавлено 07.11.2013 в 04:33 ----------

Еще раз, курсор работает как надо.

Почему тут переменная @i не обнуляется?

LOOP: <- внешний цикл на пхп, в котором меняется условия выборки condition
Query("SET @i:=0;"); <- обнуление переменной
Query("UPDATE table SET item1 = @i:=@i+item2 WHERE condition;"); <- запросы в БД
ENDLOOP; <- конец внешнего цикла
Дешевые домены для дорвеев и не только - от 55р (https://goo.gl/Wtnwqp)
C
На сайте с 04.02.2005
Offline
291
#13
Внешний цикл - цикл на любом языке, в моем случае пхп, в котором я меняю условия выборки из БД.

Так пля .... покажи код на php

А ты показываешь некий условный код, а по нему не понятен твой уровень знаний и пониманий.

sidorka
На сайте с 17.08.2012
Offline
211
#14

Хотя я немного скривил

Query("SET @i:=0;");

Это я уже позже скопировал сюда из курсора, у меня было так

Query("SELECT @i:=0;");

Разница между способами обнуления принципиальна?

---------- Добавлено 07.11.2013 в 04:39 ----------

Не работает ни так, ни эдак.

---------- Добавлено 07.11.2013 в 04:42 ----------

Chukcha:
Так пля .... покажи код на php
А ты показываешь некий условный код, а по нему не понятен твой уровень знаний и пониманий.

Затер его уже за ненадобностью, а есть принципиальная разница?

---------- Добавлено 07.11.2013 в 04:44 ----------

sidorka:
а по нему не понятен твой уровень знаний и пониманий.

чукча, ты не зюйдкай, а пальцем ткни, куда американская подлодка уплыла :)

---------- Добавлено 07.11.2013 в 04:55 ----------

Chukcha, ты не с ХИРЭ часом?

C
На сайте с 04.02.2005
Offline
291
#15

Ок... приведу аналогию

Открываешь дверь, срабатывает конечный выключатель - свет включается. Закрываем дверь свет выключается.

зы. моя альма-матер - ХПИ, еще тех далеких... 80-х

sidorka
На сайте с 17.08.2012
Offline
211
#16
Chukcha:
Открываешь дверь, срабатывает конечный выключатель - свет включается. Закрываем дверь свет выключается.

Во, самое оно :)

А серьезно, глянь пример с курсором - там понятно, что гоняется в цикле. То же самое , но средставми пхп.

ЗЫ. Сам с ХИРЭ 90-х

IL
На сайте с 20.04.2007
Offline
435
#17

sidorka, закинул бы куда-нибудь минимальный пример.

Дамп базы из трёх колонок + скрипты свои, которые криво работают.

Чтобы быстренько воспроизвести можно было у себя.. А то получается:

Это я уже позже скопировал сюда из курсора, у меня было так

Почему не работает код.. но код не такой, а похожий..

Глядишь, пока готовить пример будешь - и сам разберёшься.

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
siv1987
На сайте с 02.04.2009
Offline
427
#18
sidorka:
Внешний цикл - цикл на любом языке, в моем случае пхп, в котором я меняю условия выборки из БД.
Внутренний цикл - в данном случае, как раз тот хитрый запрос с накопительной переменной.

Лучше писать общечеловечискими принятыми терминами - цикл значит цикл, на каком бы языке он не был, запрос значит запрос и тд.

Лям строк не так критично чтобы растягивалось на световые годы. Перед обновлением удалите индексы в которые есть обновляемые поля, желательно оставить только первичный ключ. Обновление или выборку можете делать циклами по 1000 строк например.

C
На сайте с 04.02.2005
Offline
291
#19
ы не зюйдкай, а пальцем ткни, куда американская подлодка уплыла

Ну так ведь ткнул, приведя аналогию

А какая разница каким я языком изъясняюсь.

А теперь попробуй не по одному входить, а парой

sidorka
На сайте с 17.08.2012
Offline
211
#20

Ради торжества силы мысли, написал заново как дело было.

zip example.zip
123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий