- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Переиграть и победить: как анализировать конкурентов для продвижения сайта
С помощью Ahrefs
Александр Шестаков
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Признаюсь сразу - курсоры не осилил, так и не смог понять почему ошибку синтаксиса выдает.
Но скорость работы вот такого запроса вполне устраивает
Но беда с ним, когда гоняю этот запрос во внешнем цикле, не обнуляется переменная @i - просто накапливается, как будто и нет никакого SET @i:=0.
ЧЯДНТ?
---------- Добавлено 04.11.2013 в 23:55 ----------
Сервер: Localhost via UNIX socket
Программа: MySQL
Версия программы: 5.5.34-0ubuntu0.13.04.1 - (Ubuntu)
Версия протокола: 10
Кодировка сервера: UTF-8 Unicode (utf8)
Осилил курсоры, но вопрос остался - это глюк в данной версии мускула или я как-то неправильно понимаю переменные? Самое интересное, что пробовал уникализировать имена переменных - рандомно цифры приклеивал - результат тот же, суммирование просто накапливается, как будто переменная одна и та же.
Потому что переменная одна и та же
Уточню, в мускуле на все про все только одна переменная, как ее не назови?
А что ожидается получить в результате выполнения этой строчки:?
Query("UPDATE table SET item1 = @i:=@i+item2 WHERE condition;");
Уточню, у вас а не в мускуле
Накопление переменной ожидается.
siv1987, уточню еще раз - я ее обнуляю в цикле. пробовал такой вариант:
Эффект тот же - она ведет себя как одна и та же переменная, причем обнулить себя не дает. Дело на пхп было, чтоб понятен код был - там такое допускается - запросы все равно как строки передаются в функции работы с мускулом.
---------- Добавлено 05.11.2013 в 21:16 ----------
Приведу и свое художество с курсорами - мож так понятней будет, что происходит. Это работает правильно.
Что то я не понимаю здесь роль этой переменной.
Если работает правильно тогда в чем проблема?
Не работает правильно. Я в цикле меняю условия выборки - condition. Перед апдейтом пытаюсь обнулить переменную - мне нужно, чтобы по выборке сумма начинала накапливаться каждый раз с нуля. А переменная не обнуляется. Вот и подумал - в мускуле только одна переменная что ли?
---------- Добавлено 06.11.2013 в 01:36 ----------
По примеру с курсором видно, что должно выйти. Тут засада в том, что если не использовать встроенные возможности мускула, то при большом объеме БД это удовольствие растягивается надолго. А с таким подходом уже можно жить. С курсором еще лучше вышло.
Не работает правильно. Я в цикле меняю условия выборки - condition. Перед апдейтом пытаюсь обнулить переменную - мне нужно, чтобы по выборке сумма начинала накапливаться каждый раз с нуля. А переменная не обнуляется. Вот и подумал - в мускуле только одна переменная что ли?
посмотрите глазами вывод, есть ли двойные строки? двойные строки могут сбивать вашу переменную.
ну или не глазами, как-то так, не проверял:
наверное нужно в курсор добавить distinct, чтобы исключить дупы "условий выборки":
Курсор работает, не работает правильно апдейт, если гонять его внешним циклом. С курсором намного быстрее вышло. Просто разобраться хотелось с этим глюком.