Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.15;
Скачать: CL | DM;

Вниз

Помогите с запросом (SELECT)   Найти похожие ветки 

 
SergP ©   (2004-07-21 10:27) [0]

Объясню на примере что мне нужно...

Имеется 2 таблицы:
table 1


table 1
f1    f2    f3
1     1    111
2     1    222
3     1    333
1     2    444
2     2    555
3     2    666
1     3    777
2     3    888
3     3    999

table2
f1    f2
1     aaa
2     bbb
3     ccc

Нужно получить:
f1    fn1    fn2    fn2
aaa   111    222    333
bbb   444    555    666
ccc   777    888    999


Как такое можно сделать с помощью SQL-запроса? И можно ли?


 
Ega23 ©   (2004-07-21 10:29) [1]

И можно ли?

Можно.

Как такое можно сделать с помощью SQL-запроса?

Почитай про JOIN


 
Johnmen ©   (2004-07-21 10:32) [2]

Нельзя. Это уже развертка в горизонталь.


 
SergP ©   (2004-07-21 10:36) [3]


> Почитай про JOIN


А примерчик не дашь?

Почитать - то я почитаю, но все же примеры лучше "доходят"...


 
Ega23 ©   (2004-07-21 10:38) [4]

А примерчик не дашь?

Для FoxPro не дам. Не знаком с синтаксисом.


 
Vlad ©   (2004-07-21 10:40) [5]


> SergP ©   (21.07.04 10:36) [3]
>
> > Почитай про JOIN
>
>
> А примерчик не дашь?

Примерчик тебе врядли кто даст, потому что средствами SQL такое сделать нельзя.


 
Ega23 ©   (2004-07-21 10:40) [6]

Johnmen ©   (21.07.04 10:32) [2]

Нельзя. Это уже развертка в горизонталь.

Вот как-то раз делал такую дрянь:

...
Select xG.GoodID, xG.GoodNam, xG.GoodPack, ITOG=0,
C26=xTab26.C26,C27=xTab27.C27,C28=xTab28.C28,C30=xTab30.C30,
C31=xTab31.C31,C32=xTab32.C32,C33=xTab33.C33,C34=xTab34.C34,
C35=xTab35.C35,C36=xTab36.C36,C37=xTab37.C37,C38=xTab38.C38,
C39=xTab39.C39,C40=xTab40.C40,C41=xTab41.C41,C42=xTab42.C42,
C43=xTab43.C43,C44=xTab44.C44,C45=xTab45.C45,C46=xTab46.C46  
from #xGoods xG  
Full Outer Join #x26 xTab26 ON xG.GoodID=xTab26.GoodID
Full Outer Join #x27 xTab27 ON xG.GoodID=xTab27.GoodID
Full Outer Join #x28 xTab28 ON xG.GoodID=xTab28.GoodID
Full Outer Join #x30 xTab30 ON xG.GoodID=xTab30.GoodID
Full Outer Join #x31 xTab31 ON xG.GoodID=xTab31.GoodID
Full Outer Join #x32 xTab32 ON xG.GoodID=xTab32.GoodID
Full Outer Join #x33 xTab33 ON xG.GoodID=xTab33.GoodID
Full Outer Join #x34 xTab34 ON xG.GoodID=xTab34.GoodID
Full Outer Join #x35 xTab35 ON xG.GoodID=xTab35.GoodID
Full Outer Join #x36 xTab36 ON xG.GoodID=xTab36.GoodID
Full Outer Join #x37 xTab37 ON xG.GoodID=xTab37.GoodID
Full Outer Join #x38 xTab38 ON xG.GoodID=xTab38.GoodID
Full Outer Join #x39 xTab39 ON xG.GoodID=xTab39.GoodID
Full Outer Join #x40 xTab40 ON xG.GoodID=xTab40.GoodID
Full Outer Join #x41 xTab41 ON xG.GoodID=xTab41.GoodID
Full Outer Join #x42 xTab42 ON xG.GoodID=xTab42.GoodID
Full Outer Join #x43 xTab43 ON xG.GoodID=xTab43.GoodID
Full Outer Join #x44 xTab44 ON xG.GoodID=xTab44.GoodID
Full Outer Join #x45 xTab45 ON xG.GoodID=xTab45.GoodID
Full Outer Join #x46 xTab46 ON xG.GoodID=xTab46.GoodID
....


 
SergP ©   (2004-07-21 10:48) [7]


> Johnmen ©   (21.07.04 10:32) [2]
> Нельзя. Это уже развертка в горизонталь.


Да. Типа развертки в горизонталь, но не совсем.
Количество полей результата соответствующее значениям в поле table1.f1 фиксировано и равно трем.
Может это меняет дело?


 
Vlad ©   (2004-07-21 10:49) [8]


> SergP ©   (21.07.04 10:48) [7]


> Количество полей результата соответствующее значениям в
> поле table1.f1 фиксировано и равно трем.
> Может это меняет дело?

Меняет. Тогда читай про Join


 
Johnmen ©   (2004-07-21 11:14) [9]

Типа так.

SELECT T0.f2, T1.f3 fn1, T2.f3 fn2, T3.f3 fn3
FROM x2 T0
JOIN x1 T1 ON (T0.f1=T1.f2) AND (T1.f1=1)
JOIN x1 T2 ON (T0.f1=T2.f2) AND (T2.f1=2)
JOIN x1 T3 ON (T0.f1=T3.f2) AND (T3.f1=3)


Но есть сильное подозрение, что некорректно проработана структура БД.


 
SergP ©   (2004-07-21 12:08) [10]


> Johnmen ©   (21.07.04 11:14) [9]


Спасибо. Попробую.


> Но есть сильное подозрение, что некорректно проработана
> структура БД.


Структура исходных таблиц проработана не мной.
Каждый день нам приходят типа такие таблицы (как table1), и мне нужно сделать некоторый отчет (Qreport"ом). А для этого удобнее привести данные в вид таблицы такой как я писал в сабжевом посте.
файлы приходят ночью, а утром в 7-50 отчет должен быть уже у шефа. (это притом что рабочий день начинается с 9-00). На данный момент есть фигня сделаная в Excel для формирования этих "отчетов". Но я хочу сделать прогу, которая бы под утро запускалась шедулером и печатала нужную инфу. Чтобы не было надобности приходить на работу более чем на час раньше чем положено.  :-)))



Страницы: 1 вся ветка

Текущий архив: 2004.08.15;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.049 c
6-1086983867
VLoB
2004-06-11 23:57
2004.08.15
Indy (idTCPServer / idTCPClient)


6-1087129846
Кодер
2004-06-13 16:30
2004.08.15
TServerSocket и TClientSocket


8-1086101616
ki11er
2004-06-01 18:53
2004.08.15
Порезать AVI


14-1091067226
menart
2004-07-29 06:13
2004.08.15
Завтра день сисадмина!


1-1091173196
Прог
2004-07-30 11:39
2004.08.15
Indy и кодировка