Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.48 MB
Время: 0.03 c
1-1091088499
Dmitry
2004-07-29 12:08
2004.08.15
Как узнать разницу между двумя датами в днях и в годах?


14-1091034050
Art_Z
2004-07-28 21:00
2004.08.15
Как завести анкету?


1-1091215059
slavaz
2004-07-30 23:17
2004.08.15
компонент Shell помогите кто знает.


14-1090922993
Snip
2004-07-27 14:09
2004.08.15
Питер может ВСТРЕТИМСЯ?


1-1091397868
QuestionX
2004-08-02 02:04
2004.08.15
Перхватить MouseDown раньше компонента





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский