Консультация № 137473
19.05.2008, 11:26
0.00 руб.
0 2 2
Здравствуйте уважаемые эксперты!
Не могли бы Вы помочь составить запрос.
таблица (sort, kart, nn - ключевые): sort , kart, nn, data, kolvo
Примерные данные:
1 100 1 20.05.08 10
1 100 2 23.05.08 5
2 101 1 15.05.08 3
2 101 4 18.05.08 7
3 110 3 29.05.08 12

для пользователя надо представить в следующем виде:
| 1 | - | 2 | - | 3 | - | 4 | - |
-----------------------------------------------------------------------------------
100 | 20.05 | 10 | 23.05 | 5 | | | | |
101 | 15.05 | 3 | | | | | 18.05 | 12 |
110 | | | | |29.05 | 12 | | |

очень хотелось бы чтобы это был один запрос, без всяких дополнительных копирований в промежуточные табл. и доп.обработки
(в крайнем случае в таблицу можно добавить пустых значений)

или подскажите какие-либо варианты решения

Обсуждение

Неизвестный
19.05.2008, 12:17
общий
это ответ
Здравствуйте, Nataliazhurauleva!
Вообщем то не самые красивые варианты решения...
да и не написали какая БД используется. писал и пробовал все на MSSQL



Приложение:
Вариант 1select distinct (kart),(select datafrom table1 where (kart=tt.kart) and (nn=1))as data1,(select kolvofrom table1 where (kart=tt.kart) and (nn=1))as kolvo1,(select datafrom table1 where (kart=tt.kart) and (nn=2))as data2,(select kolvofrom table1 t1where (kart=tt.kart) and (nn=2))as kolvo1,(select datafrom table1 t1where (kart=tt.kart) and (nn=3))as data3,(select kolvofrom table1 t1where (kart=tt.kart) and (nn=3))as kolvo1,(select datafrom table1 t1where (kart=tt.kart) and (nn=4))as data4,(select kolvofrom table1 t1where (kart=tt.kart) and (nn=4))as kolvo1from table1 ttВариант 2select distinct (tt.kart),t1.data as data1,t1.kolvo as kolvo1,t2.data as data2,t2.kolvo as kolvo2,t3.data as data3,t3.kolvo as kolvo3,t4.data as data4,t4.kolvo as kolvo4from table1 ttleft join Table1 t1 on tt.kart=t1.kart and t1.nn=1left join Table1 t2 on tt.kart=t2.kart and t2.nn=2left join Table1 t3 on tt.kart=t3.kart and t3.nn=3left join Table1 t4 on tt.kart=t4.kart and t4.nn=4
Неизвестный
20.05.2008, 03:20
общий
это ответ
Здравствуйте, Nataliazhurauleva!
Написал запрос на oracle, но я не занимался его оптимизацией. Это отдельный вопрос.

Приложение:
select DISTINCT t.KART , t1.DATA, t1.KOLVO , t2.DATA, t2.KOLVO , t3.DATA, t3.KOLVO , t4.DATA, t4.KOLVO from tabl t , tabl t1 , tabl t2 , tabl t3 , tabl t4 WHERE t.KART = t1.KART(+) AND t.SORTI = t1.SORTI(+) AND t1.NN(+) = 1 AND t.KART = t2.KART(+) AND t.SORTI = t2.SORTI(+) AND t2.NN(+) = 2 AND t.KART = t3.KART(+) AND t.SORTI = t3.SORTI(+) AND t3.NN(+) = 3 AND t.KART = t4.KART(+) AND t.SORTI = t4.SORTI(+) AND t4.NN(+) = 4
Форма ответа