Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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" так, а по полю "к" иначе.  


На данный момент над этим уже не думаю. Решил реализовывать с помощью функций и курсора. 




Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)