Форум: "Базы";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];
ВнизПомогите с запросом (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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.041 c