Текущий архив: 2006.04.09;
Скачать: CL | DM;
ВнизВ очередной раз рискну разместить здесь вакансию Найти похожие ветки
← →
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;
Скачать: CL | DM;
Память: 1.01 MB
Время: 0.033 c