Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ЗАПРОС !!! / 14 сообщений из 14, страница 1 из 1
13.12.2005, 00:13
    #33431800
StasK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЗАПРОС !!!
Система: ASE

Есть таблица "tb1":
accitg2222210.0011111-8.00444445.00

Есть таблица "tb2": (ОЧЕНЬ желательно чтобы эта таблица была внешним DBF-файлом!)
ac1ac222222111114444433333

Нужна таблица:
ac1ac2num22222111112.0044444333335.00
где "ac1" и "ac2" - беруться из таблицы "tb2", а "num" - это сумма значений поля "itg" таблицы "tb1", соответствующих полям "ac1" и "ac2" таблицы "tb2"

------------------------------
С уважением, StasK
...
Рейтинг: 0 / 0
13.12.2005, 05:44
    #33431870
Владимор Конев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЗАПРОС !!!
StasKСистема: ASE

Есть таблица "tb1":
accitg2222210.0011111-8.00444445.00

Есть таблица "tb2": (ОЧЕНЬ желательно чтобы эта таблица была внешним DBF-файлом!)
ac1ac222222111114444433333

Нужна таблица:
ac1ac2num22222111112.0044444333335.00
где "ac1" и "ac2" - беруться из таблицы "tb2", а "num" - это сумма значений поля "itg" таблицы "tb1", соответствующих полям "ac1" и "ac2" таблицы "tb2"

------------------------------
С уважением, StasKНу, про внешний DBF-файл не подскажу - сам не местный, а вот запрос мог бы выглядеть вот так, например:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
select tb2.ac1,
       tb2.ac2,
       (
          select sum(itg) 
            from tb1 
           where tb1.acc = tb2.ac1 
                 or 
                 tb1.acc = tb2.ac2
       ) as num
  from tb2

Query finished, retrieving results...

 AC1    AC2  NUM
-----  ----- ---
 22222    11111     2 
 44444    33333     5 

 2  row(s) retrieved
...
Рейтинг: 0 / 0
13.12.2005, 12:16
    #33432607
_makSim
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЗАПРОС !!!
Как вариант:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
  select 
    tb2.ac1,
    tb2.ac2,
    sum(tb1.itg)
  from tb1, tb2
  where tb2.ac1=tb1.acc or tb2.ac2=tb1.acc 
  group by tb2.ac1,tb2.ac2
...
Рейтинг: 0 / 0
13.12.2005, 17:57
    #33433998
StasK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЗАПРОС !!!
Владимор Конев
... а вот запрос мог бы выглядеть вот так, например:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
select tb2.ac1,
       tb2.ac2,
       (
          select sum(itg) 
            from tb1 
           where tb1.acc = tb2.ac1 
                 or 
                 tb1.acc = tb2.ac2
       ) as num
  from tb2

Query finished, retrieving results...

 AC1    AC2  NUM
-----  ----- ---
 22222    11111     2 
 44444    33333     5 

 2  row(s) retrieved


СПАСИБО !!!
Еще вопрос, если такая ситуация:

Есть таблица "tb1":
accitg2222210.0011111-8.00444445.00111120.55

Есть таблица "tb2":
ac1ac2222221111122222111124444433333
т.е. для одного начения "22222" есть два соответствующих начения "11111" и "11112"
как быть в таком случае ???
...
Рейтинг: 0 / 0
13.12.2005, 18:17
    #33434056
_makSim
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЗАПРОС !!!
Если нужно:

22222,11111 -> 2
22222,11112 -> 10.55

то всё будет правильно работать.
...
Рейтинг: 0 / 0
13.12.2005, 19:15
    #33434180
StasK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЗАПРОС !!!
_makSimЕсли нужно:

22222,11111 -> 2
22222,11112 -> 10.55

то всё будет правильно работать.

Это понятно! Но нужна сумма всего этого:

1) "22222"+"11111"=2
2) "22222"+"11112"=10.55

и "1)"+"2)"=12.55
...
Рейтинг: 0 / 0
14.12.2005, 08:44
    #33434711
Владимор Конев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЗАПРОС !!!
StasKт.е. для одного начения "22222" есть два соответствующих начения "11111" и "11112"
как быть в таком случае ???
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
select tb2.ac1,
       min(tb2.ac2) as min_ac2,
       max(tb2.ac2) as max_ac2,
       sum(tb1.itg) as num,
       count(distinct tb2.ac2) as counter
  from tb1, tb2
 where tb2.ac1=tb1.acc or tb2.ac2=tb1.acc 
 group by tb2.ac1

Query finished, retrieving results...

 AC1   MIN_AC2  MAX_AC2   NUM   COUNTER
-----  -------  -------  -----  -------
 22222     11111       11112    12 . 55          2 
 44444     33333       33333        5          1 

 2  row(s) retrieved
Оно ???
...
Рейтинг: 0 / 0
14.12.2005, 11:36
    #33435154
_makSim
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЗАПРОС !!!
Вряд ли оно. А если больше 2х разных значений ac2? :)

StasK'у следует более понятно описать, что необходимо получить.
...
Рейтинг: 0 / 0
14.12.2005, 12:13
    #33435275
Владимор Конев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЗАПРОС !!!
_makSimВряд ли оно. А если больше 2х разных значений ac2? :)

StasK'у следует более понятно описать, что необходимо получить.Оно или не оно - решать автору темы :-).

А в остальном с тобой согласен - совершенно не понятно, сколько может быть различных значений ас2 и не понятно, как поступать в случае, когда этих значений больше 2.

Мой вариант, что называется, подгонка решения под имеющиеся условия и озвученный ответ, но в отсутствии четкого описания алгоритма получения этого самого ответа.
...
Рейтинг: 0 / 0
14.12.2005, 17:49
    #33436440
StasK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЗАПРОС !!!
StasK Но нужна сумма всего этого:

1) "22222"+"11111"=2
2) "22222"+"11112"=10.55

и "1)"+"2)"=12.55


Вот тут я напутал :( Прошу прощения, за то что ввел в заблуждение !

Нужно так:
"22222"+"11111"+"11112"="10.00"+"-8.00"+"0.55"=2.55

P.S. MakSimВряд ли оно. А если больше 2х разных значений ac2? :)

Значений действительно максимум 2 (два).
...
Рейтинг: 0 / 0
15.12.2005, 11:13
    #33437429
Владимор Конев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЗАПРОС !!!
StasK StasK Но нужна сумма всего этого:

1) "22222"+"11111"=2
2) "22222"+"11112"=10.55

и "1)"+"2)"=12.55


Вот тут я напутал :( Прошу прощения, за то что ввел в заблуждение !

Нужно так:
"22222"+"11111"+"11112"="10.00"+"-8.00"+"0.55"=2.55

P.S. MakSimВряд ли оно. А если больше 2х разных значений ac2? :)

Значений действительно максимум 2 (два).Вот такой вариант решения спасёт отца русской демократии???
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
select ac1, 
       sum(itg) as num,
       count( 1 ) as counter
  from (
          select distinct 
                 tb2.ac1, tb1.itg 
            from tb1, 
                 tb2
           where tb2.ac1 = tb1.acc 
                 or 
                 tb2.ac2 = tb1.acc 
       )
 group by ac1

Query finished, retrieving results...

 AC1    NUM   COUNTER
-----  -----  -------
 22222     2 . 55          3 
 44444        5          1 

 2  row(s) retrieved
...
Рейтинг: 0 / 0
15.12.2005, 17:47
    #33438981
StasK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЗАПРОС !!!
Владимор Конев
Вот такой вариант решения спасёт отца русской демократии???

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
select ac1, 
       sum(itg) as num,
       count( 1 ) as counter
  from (
          select distinct 
                 tb2.ac1, tb1.itg 
            from tb1, 
                 tb2
           where tb2.ac1 = tb1.acc 
                 or 
                 tb2.ac2 = tb1.acc 
       )
 group by ac1

Query finished, retrieving results...

 AC1    NUM   COUNTER
-----  -----  -------
 22222     2 . 55          3 
 44444        5          1 

 2  row(s) retrieved


ДА !!!!!!! УЖЕ СПАСАЕТ !!!!!!
ОГРОМНОЕ ВАМ СПАСИБО !!!!!

P.S. Можно ли где-то почитать о SQL (для ASE ) на русском языке, если наете киньте пожалуйста ссылку(и) ???
...
Рейтинг: 0 / 0
15.12.2005, 21:40
    #33439401
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЗАПРОС !!!
StasKP.S. Можно ли где-то почитать о SQL (для ASE ) на русском языке, если наете киньте пожалуйста ссылку(и) ???

http://sybooks.sybase.com Там есть документация на русском языке.
Переведенная. Ее кажется даже скачать можно.
...
Рейтинг: 0 / 0
16.12.2005, 13:14
    #33440614
AlexBell
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЗАПРОС !!!
Сморти и сразу качай, это то что надо
http://sybooks.sybase.com/asg1250r.html
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ЗАПРОС !!! / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]