Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.04.09;
Скачать: [xml.tar.bz2];

Вниз

В очередной раз рискну разместить здесь вакансию   Найти похожие ветки 

 
Igorek ©   (2006-03-16 14:13) [200]


> Курдль ©   (16.03.06 11:51) [189]

Типа такого:
select
o.*,
r.OrderRequestAmount,
p.OrderPaymentAmount,
jp.jpName
from A as o
left join (
select
 sum(Amount) as OrderRequestAmount,
 orderID
from B
group by orderID
) as r on o.ID = r.orderID
left join (
select
 sum(Amount) as OrderPaymentAmount,
 orderID
from C
group by orderID
)  as p on o.ID = p.orderID
left join (
select
 ac.orderID,
 jp.[Name] as jpName
from D as ac
left join E as jp on ac.ID = jp.accountID
) as jp on o.ID = jp.orderID


 
Курдль ©   (2006-03-16 14:37) [201]


> Igorek ©   (16.03.06 14:13) [200]


Замысловато...
Похоже на запрос для ранних версий оракла.
Но подозреваю, что group by будет пожирать очень много времени.
Сильно отличается от того, что я написал навскидку для "Sybase ASA" в Курдль ©   (16.03.06 10:25) [170]  (еще один мой респект Watcom!).


 
paul_k ©   (2006-03-16 14:37) [202]

Первый акт мрлезонского балета просто суммы по договорам
SELECT     t_contract.id AS contract,
          SUM(t_order.doc_sum) AS order_cum,
          SUM(t_paydoc.doc_sum) AS pay_sum
FROM         t_contract
            LEFT OUTER JOIN t_paydoc ON t_contract.id = t_paydoc.contract_id
            LEFT OUTER JOIN t_order ON t_contract.id = t_order.contract_id
GROUP BY t_contract.id

Второй акт с подбором имени физика 2 варианта
SELECT     t_contract.id AS contract, SUM(t_order.doc_sum) AS order_cum, SUM(t_paydoc.doc_sum) AS pay_sum, t_person_j.id AS Expr1,
                     t_person_f.f_name
FROM         t_contract LEFT OUTER JOIN
                     t_account ON t_contract.acc_id = t_account.id LEFT OUTER JOIN
                     t_order ON t_contract.id = t_order.contract_id LEFT OUTER JOIN
                     t_paydoc ON t_contract.id = t_paydoc.contract_id LEFT OUTER JOIN
                     t_person_j LEFT OUTER JOIN
                     t_person_f ON t_person_j.id = t_person_f.person_jur_id ON t_account.person_jur_id = t_person_j.id
GROUP BY t_contract.id,  t_person_f.f_name

или достаем имя физика подзапросом
SELECT     t_contract.id AS contract,
          SUM(t_order.doc_sum) AS order_cum,
          SUM(t_paydoc.doc_sum) AS pay_sum,
          (SELECT     t_person_j.id AS Expr1, t_person_f.f_name
            FROM         t_account LEFT OUTER JOIN
                     t_person_j LEFT OUTER JOIN
                     t_person_f ON t_person_j.id = t_person_f.person_jur_id ON t_account.person_jur_id = t_person_j.id
            where t_account.id = t_contract.acc_id
           ) as F_Name
FROM         t_contract
            LEFT OUTER JOIN t_paydoc ON t_contract.id = t_paydoc.contract_id
            LEFT OUTER JOIN t_order ON t_contract.id = t_order.contract_id
GROUP BY t_contract.id


 
paul_k ©   (2006-03-16 14:45) [203]

вроде не сильно налажал..


 
paul_k ©   (2006-03-16 14:48) [204]

не таки налажал.. откуда то взял что "Р/С в договоре может отсутствовать" мдя
тогда тока так
SELECT     t_contract.id AS contract, SUM(t_order.doc_sum) AS order_cum, SUM(t_paydoc.doc_sum) AS pay_sum, t_person_j.id AS Expr1,
                     t_person_f.f_name
FROM         t_contract INNER JOIN
                     t_account ON t_contract.acc_id = t_account.id LEFT OUTER JOIN
                     t_order ON t_contract.id = t_order.contract_id LEFT OUTER JOIN
                     t_paydoc ON t_contract.id = t_paydoc.contract_id LEFT OUTER JOIN
                     t_person_j LEFT OUTER JOIN
                     t_person_f ON t_person_j.id = t_person_f.person_jur_id ON t_account.person_jur_id = t_person_j.id
GROUP BY t_contract.id, t_person_f.f_name


 
Igorek ©   (2006-03-16 15:25) [205]


> Курдль ©   (16.03.06 14:37) [201]
> Но подозреваю, что group by будет пожирать очень много времени.

Можно подозревать что угодно, но оптимальнее не напишешь. Эти подзапросы не связаны с внешним, потому работают оптимально. Кроме того этот весь запрос хорошо распаралеливается - еще один плюс за то что-бы для сервера купить многопроцессорную железяку.


 
paul_k ©   (2006-03-17 09:30) [206]

> [189] Курдль ©   (16.03.06 11:51)

и что, я сосвсем лажу написал? или как?


 
Курдль ©   (2006-03-17 10:01) [207]


> paul_k ©   (17.03.06 09:30) [206]
> и что, я сосвсем лажу написал? или как?


Извини, не проверял :) Как-нить на досуге на реальной базе посмотрю, а то ныне у меня, как у Винни Пуха: "... в голове опилки и длинные слова меня только огорчают" :)

Я бы написал так, как  написал в [170].

Жаль, что Николай, - эксперт по супер-запросам, не проявил интереса к нашим попыткам.


 
paul_k ©   (2006-03-17 11:21) [208]

> [207] Курдль ©   (17.03.06 10:01)

Так у Николая сейчас другое. Ему бы работника найти:)


 
Nikolay M. ©   (2006-03-17 11:24) [209]


> Курдль ©   (17.03.06 10:01) [207]
> Жаль, что Николай, - эксперт по супер-запросам, не проявил
> интереса к нашим попыткам.


Под..под.. подколол :)))
Павел прав - мне бы сейчас действительно продержаться до выхода нового сотрудника :) И так уже на двух стульях сижу. Так что вы уж пока без меня как-нибудь :)


 
Danilka ©   (2006-03-17 16:32) [210]

[205] Igorek ©   (16.03.06 15:25)
Ню-ню.
Таки да, твои подзапросы карашо распаралеливается, однако, потом они все соединяюцца с таблицей договоров и чего там говорит план запроса, скока это будет стоить?
Кроме того, в реальной ситуации редко когда требуется инфа по всем договорам, скорее всего потребуется либо по открытым, либо за период, либо по тем, у которх есть неоплаченый остаток.
Для первых двух, таки, вытаскивать суммы будет намного оптимальнее, чем твой вариант с добавлением условий.
Третий вариант, тут лучше ввести регистр, по которому и фильтровать.


 
paul_k ©   (2006-03-20 11:01) [211]

Да, Есть подозрение, что я присоеденюсь к Николаю в поиске людей....


 
Nikolay M. ©   (2006-03-20 11:07) [212]


> paul_k ©   (20.03.06 11:01) [211]


Конкурент???


 
paul_k ©   (2006-03-20 11:14) [213]

А как же...
Вот вроде просят троих человек подобрать. Как всегда. SQL, хоть поверхностные знания о бухгалтерии бумагах, документообороте.
Точнее - должны требования на днях предоставить.
от попробую поработать хедхантером в свободное время


 
Nikolay M. ©   (2006-03-20 11:21) [214]


> paul_k ©   (20.03.06 11:14) [213]
> от попробую поработать хедхантером в свободное время


Имхо, сейчас не сезон - все, кто хотел, поувольнялся после НГ и уже нашли теплые места. Глянь на скульру: на несколько страниц вакансий приходится всего пара штук резюме.


 
paul_k ©   (2006-03-20 11:41) [215]

ээээ... сейчас студиозусы дипломы дописывають. От их и поставлено целью ловить:)


 
paul_k ©   (2006-03-20 11:43) [216]

кстати, не скинешь свою задачку на почту? крнкуренту:)


 
Nikolay M. ©   (2006-03-20 11:53) [217]


> ээээ... сейчас студиозусы дипломы дописывають. От их и поставлено
> целью ловить:)


Ууу.. Сочуйствую.
Только вот этого не бери

http://www.sql.ru/forum/actualthread.aspx?tid=266933&pg=1
http://www.sql.ru/forum/actualthread.aspx?tid=251058

А то увольнять потом замучаешься :)))

Если найду задачку, что я студентам давал - кину. То, что я сейчас даю, для студиотузов будет сложновато.


 
paul_k ©   (2006-03-20 11:59) [218]

> Если найду задачку, что я студентам давал - кину. То, что
> я сейчас даю, для студиотузов будет сложновато.

Студиозус студиозусу люпус эст:)
все давай. :) В свою очередь обещаю, что как только до своих тестов доберусь обязательно перешлю в ответ


 
Nikolay M. ©   (2006-03-20 12:09) [219]


> paul_k ©   (20.03.06 11:59) [218]


Ушло на анкетное мыло.



Страницы: 1 2 3 4 5 6 вся ветка

Форум: "Прочее";
Текущий архив: 2006.04.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 1.02 MB
Время: 0.035 c
2-1142857616
id
2006-03-20 15:26
2006.04.09
Путь при запросе пароля


10-1116338010
sinsin
2005-05-17 17:53
2006.04.09
Доступ к RemoteDataModule из Borland Socket Server?


2-1143547126
DelphiLexx
2006-03-28 15:58
2006.04.09
XP Manifest и цвет TPanel


2-1143533902
Quattro
2006-03-28 12:18
2006.04.09
RGB


5-1128941622
pvrus
2005-10-10 14:53
2006.04.09
TcxGrid - фильтрация





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский