| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > Не могу понять как работает |
| Автор: Antrisol 19.10.2007, 08:03 |
| Добрый день. Есть таблица test: --------------------- id a b k --------------------- 21 1 2 1 22 1 3 1 23 1 4 1 24 1 5 1 25 1 6 1 26 1 7 1 27 1 8 1 28 1 9 1 ----------------------- Пишу запрос: update test a, test b set b.a = a.id, a.k = a.id where a.a = b.a and a.b < b.b И получаю такой результат: ---------------------- id a b k ---------------------- 21 1 2 21 22 21 3 22 23 21 4 23 24 21 5 24 25 21 6 25 26 21 7 26 27 21 8 27 28 21 9 1 ---------------------- По всем моим ожиданиям, в последней строке должны были появиться 21. Пожалуйста помогите понять как происходит изменение. |
| Автор: mzalutski 19.10.2007, 10:21 |
| Хитрый запрос у вас. А что алиасы к таблицам совпадающие с полями это что бы запутать врага? И вообще откуда такая задача возникает? |
| Автор: Antrisol 23.10.2007, 23:20 |
| Это тестовый вариант, и что первое на ум пришло, так и обозвал =) а, b это интервал, к - количество , нужно избавиться от пересечения, с хитрым суммированием. В процессе экспериментов выяснил, что если таблица упорядочена как надо, от пересечения избавляемся одним запросом. Хотел чтобы и хитрое суммирование проводилось в нём же, но что то не выходило. Решил проверить, как подставляются значения, и увидел, что по полю "a" так, а по полю "к" иначе. На данный момент над этим уже не думаю. Решил реализовывать с помощью функций и курсора. |