Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 SELECT покоя не даёт  [new]
Prosyanevich SV
Member

Откуда: донбасс сити
Сообщений: 622
Запрос на самом деле на много сложней.
Каждый запрос с кучей вложенныйх запросов - возвращает два столбца - код и сумму, строк с кодом и суммой много, но кол-во строк одинаковое, т.е. как бы итоги по торговым точкам.
Вывести это нужно в виде:
id| a.1 | b.2 | c.3 | c.3 | e.5 |
id| a.1 | b.2 | c.3 | c.3 | e.5 |
id| a.1 | b.2 | c.3 | c.3 | e.5 |

Делать это нужно через JOIN? Не пойму как.

SELECT a.id, a.1 FROM test a
SELECT b.id, b.2 FROM test b
SELECT c.id, c.3 FROM test c
SELECT d.id, d.4 FROM test d
SELECT e.id, e.5 FROM test e

Подскажите пожалусто
Всем спасибо.
20 июн 07, 00:21    [4288537]     Ответить | Цитировать Сообщить модератору
 Re: SELECT покоя не даёт  [new]
db-man
Guest
select a.id, a.1, b.2, c.3, d.4, e.5
from a, b, c, d, e
where a.id = b.id
  and a.id = c.id
  and a.id = d.id
  and a.id = e.id
20 июн 07, 00:29    [4288550]     Ответить | Цитировать Сообщить модератору
 Re: SELECT покоя не даёт  [new]
Prosyanevich SV
Member

Откуда: донбасс сити
Сообщений: 622
помоему это не подходит, либо не пойму как переписать мои все вещи
Каждый запрос очень большой и сложный - возвращает вот такую вещь:

SELECT a.id, a.1 FROM test a
a.id           |           a.1 
1                         100.00 $
2                         150.00 $ 
3                           80.00 $
 
SELECT b.id, b.2 FROM test b
a.id           |           b.2 
1                         100.00 шт
2                         150.00 шт
3                           80.00 шт

SELECT c.id, c.3 FROM test c
a.id           |           c.3 
1                          1.00 %
2                          1.88 %
3                          0.50 %

Стулить в один запрос.....................

Нужно всё это вывести вот так
a.id           |           a.1          |           b.2           |           c.3 
1                         100.00 $            100.00 шт                1.00 %  
2                         150.00 $            150.00 шт                1.88 %
3                           80.00 $             80.00 шт                 0.50 %



Я думаю JOIN, но не знаю как. Ткните носом?
20 июн 07, 00:50    [4288570]     Ответить | Цитировать Сообщить модератору
 Re: SELECT покоя не даёт  [new]
RA\/EN
Member

Откуда:
Сообщений: 3658
Вечная тема?
см. FAQ
20 июн 07, 01:06    [4288584]     Ответить | Цитировать Сообщить модератору
 Re: SELECT покоя не даёт  [new]
miksoft
Member

Откуда:
Сообщений: 38540
RA\/EN
см. FAQ
а причем тут транспонирование?
насколько я понимаю задачу - варианта db-man-а вполне достаточно
20 июн 07, 01:17    [4288595]     Ответить | Цитировать Сообщить модератору
 Re: SELECT покоя не даёт  [new]
Prosyanevich SV
Member

Откуда: донбасс сити
Сообщений: 622
а можно по простому?
доку полистал, но не осилил что и куда
20 июн 07, 01:31    [4288604]     Ответить | Цитировать Сообщить модератору
 Re: SELECT покоя не даёт  [new]
mssqladmin
Guest
Если я правильно понял, в таблицах a,b,c id могут не совпадать и вы не можете сделать
left join к какой-то одной табличке в которых есть все id. Значит ее нужно создать на лету.

SELECT T.id, a.Value1, b.Value2, c.Value3
FROM (SELECT DISTINCT id FROM a
UNION
SELECT DISTINCT id FROM b
UNION
SELECT DISTINCT id FROM c
) T
LEFT JOIN a
ON a.id = T.id
LEFT JOIN b
ON b.id = T.id
LEFT JOIN c
ON c.id = T.id
20 июн 07, 07:20    [4288743]     Ответить | Цитировать Сообщить модератору
 Re: SELECT покоя не даёт  [new]
oragraf
Member

Откуда: Moscow
Сообщений: 1313
RA\/EN
Вечная тема?
см. FAQ

+1
2Автор - это именно то, что вам надо - разворот одинакового количества строк в столбцы
20 июн 07, 09:40    [4289098]     Ответить | Цитировать Сообщить модератору
 Re: SELECT покоя не даёт  [new]
miksoft
Member

Откуда:
Сообщений: 38540
oragraf
разворот одинакового количества строк в столбцы
Объясните, пожалуйста, где здесь разворот? Вы предлагаете результат пяти запросов объединять через UINON ALL, а потом разворачивать в строку?
20 июн 07, 09:48    [4289134]     Ответить | Цитировать Сообщить модератору
 Re: SELECT покоя не даёт  [new]
Elic
Member

Откуда:
Сообщений: 29979
oragraf
+1
это именно то, что вам надо - разворот
Тут нужен лишь банальнейший join
20 июн 07, 09:49    [4289135]     Ответить | Цитировать Сообщить модератору
 Re: SELECT покоя не даёт  [new]
OraDen
Member

Откуда:
Сообщений: 828
Prosyanevich SV
помоему это не подходит...

И чем же join вас не утроил?

with
a as (SELECT 1 id, '100.00 $' a1 from dual union all
      SELECT 2, '150.00 $' from dual union all
      SELECT 3, '80.00 $' from dual),
b as (SELECT 1 id, '100 шт' b2 from dual union all
      SELECT 2, '150 шт' from dual union all
      SELECT 3, '80 шт' from dual),
c as (SELECT 1 id, '1.00 %' c3 from dual union all
      SELECT 2, '1.88 %' from dual union all
      SELECT 3, '0.50 %' from dual)
Select a.id, a.a1, b.b2, c.c3 from a, b, c
where a.id = b.id and
      a.id = c.id

        ID A1       B2     C3
---------- -------- ------ ------
         1 100.00 $ 100 шт 1.00 %
         2 150.00 $ 150 шт 1.88 %
         3 80.00 $  80 шт  0.50 %
20 июн 07, 10:06    [4289208]     Ответить | Цитировать Сообщить модератору
 Re: SELECT покоя не даёт  [new]
oragraf
Member

Откуда: Moscow
Сообщений: 1313
Elic
oragraf
Тут нужен лишь банальнейший join

Ай-яй-яй, облажался я с утра. :(
20 июн 07, 10:36    [4289370]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить