SQL

Agil
Дата: 02.12.2009 15:21:52
Имееться 2 таблицы 1 таблица чиста справочник и состоит из 22 элементов.
Назовем таблицу метод и в ней поля ид
2 таблицу в которую вводят данные по выбранным элементом первой таблицы но вводимая информация может максимально быть 22 элементов ,но в основном состоит из 5-7 данных
а структура 2 таблицы такова
goods_id , method_id, currencycode, summa, coeff, rate, dec_id

262 12 840 16 1 0,8034 242
262 13 840 161 1 0,8034 242
263 4 932 1606,8 1 1 242
263 2 932 1606,8 1 1 242
263 1 840 2000 1 0,8034 242
263 15 932 0 1 1 242
263 22 840 2000 1 0,804 242
263 21 932 1606,8 1 1 242
263 20 932 0 1 1 242

никак неполучаетсья сформировать запрос правильно, такой результат был бы чтобы
 

262 1 0 0 0 0 242
262 2 0 0 0 0 242
262 3 0 0 0 0 242
262 4 0 0 0 0 242
262 5 0 0 0 0 242
262 6 0 0 0 0 242
262 7 0 0 0 0 242
262 8 0 0 0 0 242
262 9 0 0 0 0 242
262 10 0 0 0 0 242
262 11 0 0 0 0 242
262 12 840 16 1 0,8034 242
262 13 840 161 1 0,8034 242
262 14 0 0 0 0 242
262 15 0 0 0 0 242
262 16 0 0 0 0 242
262 17 0 0 0 0 242
262 18 0 0 0 0 242
262 19 0 0 0 0 242
262 20 0 0 0 0 242
262 21 0 0 0 0 242
262 22 0 0 0 0 242
263 1 840 2000 1 0,8034 242
263 2 932 1606,8 1 1 242
263 3 932 1606,8 1 1 242
263 4 0 0 0 0 242
263 5 0 0 0 0 242
263 6 0 0 0 0 242
263 7 0 0 0 0 242
263 8 0 0 0 0 242
263 9 0 0 0 0 242
263 10 0 0 0 0 242
263 11 0 0 0 0 242
263 12 0 0 0 0 242
263 13 0 0 0 0 242
263 14 0 0 0 0 242
263 15 932 0 1 1 242
263 16 0 0 0 0 242
263 17 0 0 0 0 242
263 18 0 0 0 0 242
263 19 0 0 0 0 242
263 20 932 0 1 1 242
263 21 932 1606,8 1 1 242
263 22 840 2000 1 0,804 242
suPPLer
Дата: 02.12.2009 15:43:26
Agil,

версия Oracle DB?
_Alex_SMIRNOV_
Дата: 02.12.2009 15:48:59
WITH data AS 
  (SELECT 1 id1, 2 id2, 3 id3 FROM dual UNION ALL SELECT 3 id1, 4 id2, 6 id3 FROM dual)
SELECT NVL(data.id1, m.id1) id1, NVL(data.id2, m.id2) id2, NVL(data.id3, m.id3) id3
  FROM data,
       (SELECT id1, id2, 0 id3 
          FROM (SELECT id1 
                   FROM data
               GROUP BY id1), 
               (SELECT LEVEL id2 FROM dual CONNECT BY LEVEL <=22) ) m
 WHERE m.id1 = data.id1(+)
   AND m.id2 = data.id2(+)
ORDER BY 1,2   
Agil
Дата: 02.12.2009 15:55:50
suPPLer
Agil,

версия Oracle DB?

oracle 9.2
Agil
Дата: 02.12.2009 16:01:02
_Alex_SMIRNOV_
WITH data AS 
  (SELECT 1 id1, 2 id2, 3 id3 FROM dual UNION ALL SELECT 3 id1, 4 id2, 6 id3 FROM dual)
SELECT NVL(data.id1, m.id1) id1, NVL(data.id2, m.id2) id2, NVL(data.id3, m.id3) id3
  FROM data,
       (SELECT id1, id2, 0 id3 
          FROM (SELECT id1 
                   FROM data
               GROUP BY id1), 
               (SELECT LEVEL id2 FROM dual CONNECT BY LEVEL <=22) ) m
 WHERE m.id1 = data.id1(+)
   AND m.id2 = data.id2(+)
ORDER BY 1,2   


честно говоря неразобрался я можете в моем примере подсказать
suPPLer
Дата: 02.12.2009 16:15:07
Agil,

а что непонятно-то?

PS: Будь у Вас 10g, можно было сделать через partition outer join.
Agil
Дата: 02.12.2009 16:19:39
suPPLer
Agil,

а что непонятно-то?

PS: Будь у Вас 10g, можно было сделать через partition outer join.

я на 9 зделал left join неправильно резльтак выдал мне
suPPLer
Дата: 02.12.2009 16:22:03
Agil,

уверен, ошибка в 17-ой строке! (с) :) Показывайте, что Вы сделали, какой результат получился...
Agil
Дата: 02.12.2009 16:28:23
suPPLer
Agil,

уверен, ошибка в 17-ой строке! (с) :) Показывайте, что Вы сделали, какой результат получился...

да я уже стер это неполучилось поэтому и другие запросы делал неполучилось
Elic
Дата: 02.12.2009 17:53:58
Agil
честно говоря неразобрался я
Оно и не мудрено