Циклическая процедура для каждого результата строки - PullRequest
0 голосов
/ 06 сентября 2011

Я хочу создать процедуру в MySQL для цикла в каждой строке из результата запроса.Итак, у меня есть этот запрос результата:

Person | Money1 | Money2
     A |    100 |    100
     B |    200 |    200
     C |    150 |    150
     D |    220 |    220

Я хочу сравнить деньги каждого человека, логика выглядит следующим образом.

A with B
  Money1[A] --> Money1[B]
  Money2[A] --> Money2[B]
A with C
  Money1[A] --> Money1[C]
  Money2[A] --> Money2[C]
A with D
  Money1[A] --> Money1[D]
  Money2[A] --> Money2[D]

это конец для loop1, затем продолжить ..

B with C
  Money1[B] --> Money1[C]
  Money2[B] --> Money2[C]
B with D
  Money1[B] --> Money1[D]
  Money2[B] --> Money2[D]

это конец для loop2 и последний ..

C with D
  Money1[C] --> Money1[D]
  Money2[C] --> Money2[D]

У меня уже есть функция для сравнения денег, и ее следует использовать так:

SELECT compare(from_money1, from_money2, to_money1, to_money2);

поэтому результат будет выглядеть следующим образом:

Person | Result1 | Result2
    AB |    -100 |    -100
    AC |     -50 |     -50
    AD |    -120 |    -120
    BC |      50 |      50
    BD |     -20 |     -20
    CD |     -70 |     -70

Но я запутался, как зациклить его из запроса результата, могу ли я сделать это в процедуре MySQL, это будет очень полезно, если есть пример для него.

1 Ответ

0 голосов
/ 07 сентября 2011

Я думаю, что вы слишком усложняете вещи. Это все, что вам нужно (учитывая, что имя таблицы - деньги)

select concat(m1.person, m2.person) as Person, 
       m1.money1-m2.money1 as Result1, 
       m1.money2-m2.money2 as Result2 
  from money m1, 
       money m2 
 where m1.person < m2.person 
 order by m1.person, m2.person;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...