- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Такой вопрос - хочу вообще без пыхи обойтись - преполагаю что возможно но не "умею как" :)
Короче такая задача, есть таблица:
В результате сложных запросов получаю "виртуальную" таблицу, т.е. в конечном итоге имею выборку, которая выглядит так:
задача пройтись по таблице peoples и в колонке dolg изменить значение на dolg=dolg+sum
т.е. примерно как то так:
но вот как именно - в этом вся загвоздка.
Т.е. хочется проблему решить без циклов и пр., а просто одним простым мускульным запросом, иначе говоря - ТОЛЬКО средствами самого мускуля. Или такое невозможно?
REPLACE теоретически может с такой задачей справиться - но не хочется самого REPLACE использовать.
Пора вам почитать про представления в mysql 5 (view) и про то как их обновляют.
для начала сойдет и хабр http://habrahabr.ru/blogs/mysql/47031/
есть ограничения :
Соответствие 1 к 1 между строками представления и таблиц, на которых основано представление, т.е. каждой строке представления должно соответствовать по одной строке в таблицах-источниках.
Поля представления должны быть простым перечислением полей таблиц, а не выражениеями col1/col2 или col1+2
Если удастся добиться выполнения условий, будет удобно и красиво.
но это общие слова в случае сложных условий. view позволяет удобно оперировать сложными фактами.
вам сейчас кажется подойдет что-то вроде:
update table1 join (select a,b from table2) table2 on table1.a=table2.a
set table1.a=table1.a+table2.b;
выложите дамп и кто-нибудь поможет конкретный запрос написать. реконструировать таблицы по описанию страшно неудобно.
Классная статья - не знал вообще о такой штуке, внешне похоже на то что надо, но зараза в моем случае, при попытке сделать:
CREATE OR REPLACE VIEW v AS [SELECT]
т.е. из того самого моего селекта, ругается:
#1349 - View's SELECT contains a subquery in the FROM clause
т.е. на то что в нем вложенные селекты есть (и это так - там довольно сложно).
Т.е. на практике получается что представления не работают с вложенными запросами.
malls добавил 13.03.2009 в 13:44
А вот за это спасибо огромное, даже не так, а вот так: СПАСИБО ОГРОМНОЕ!!!:
update table1 join (select a,b from table2) table2 on table1.a=table2.a
set table1.a=table1.a+table2.b;
Я как раз в этом то и сомневался, что можно джойнить в UPDATE - все отлично сработало!
view и есть по сути вложенный запрос. просто создайте несколько view на этих подзапросах.
да и второй вариант попробуйте. по сути это развернутый view
не про то подумал. Но, потом раздел посмотрел :D