Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2008, 19:31   #1
andrianov123
 
Регистрация: 06.05.2008
Сообщений: 3
По умолчанию два запроса, которые нужно объединить в один.

У меня есть два запроса, которые нужно объединить в один
Первый:
/*скрпипт выбора суммарного кол-ва абонентов по селам.sql*/
select count(tu.paccount)Vsego_abonetov, PC.street, PCGOR.NAME GOROD,PCUL.NAME ULICA
from tu
left join paccount p on p.idcontract=tu.idcontract
left join ADDRESSTEXT(tu.idaddress) adt on (1=1)
left join postclass PC on (pc.idpost = p.Address)
left join postclass PCGOR on (pc.place = pcgor.idpost)
left join postclass PCUL on (pc.street = pcul.idpost)
left join postclass PCDOM on (pc.building = pcDOM.idpost)
left join postclass PCKVART on (pc.apartment = pcKVART.idpost)
where tu.idcontract>0
and p.stateof='1'
group by PC.street, PCGOR.NAME,PCUL.NAME
order by PCGOR.NAME, PCUL.NAME

а второй такой же, только с дополнительными признаками
select count(tu.paccount), PC.street, PCGOR.NAME GOROD,PCUL.NAME ULICA
from tu
left join paccount p on p.idcontract=tu.idcontract
left join tmeterwh m on(m.idtmeter=tu.tmeter)
left join orders o on o.idtu=tu.idtu and o.typecnt_new=tu.tmeter and o.kod_rabot in ('У','З') and o.datework=
(select min(oo.datework) from orders oo where oo.idtu=o.idtu and oo.typecnt_new=o.typecnt_new)
left join tmeter_position tmp_new on tmp_new.id=o.tmeter_position_new
LEFT OUTER JOIN EMPLOYEE ee ON (O.IDWORKER = ee.IDEMP)
left join ADDRESSTEXT(tu.idaddress) adt on (1=1)
left join postclass PC on (pc.idpost = p.Address)
left join postclass PCGOR on (pc.place = pcgor.idpost)
left join postclass PCUL on (pc.street = pcul.idpost)
left join postclass PCDOM on (pc.building = pcDOM.idpost)
left join postclass PCKVART on (pc.apartment = pcKVART.idpost)
where tu.idcontract>0
and tmp_new.id='6'
and p.stateof='1'
group by PC.street, PCGOR.NAME,PCUL.NAME
order by PCGOR.NAME, PCUL.NAME
andrianov123 вне форума Ответить с цитированием
Старый 15.05.2008, 10:36   #2
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
По умолчанию

Используй union...
Нет невыполнимых задач, всё дело времени...
D-mon вне форума Ответить с цитированием
Старый 15.05.2008, 19:46   #3
andrianov123
 
Регистрация: 06.05.2008
Сообщений: 3
По умолчанию

D-mon
Не выходит! Подскажи! Пожалуйста!
andrianov123 вне форума Ответить с цитированием
Старый 16.05.2008, 10:16   #4
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
По умолчанию

select count(tu.paccount)Vsego_abonetov, PC.street, PCGOR.NAME GOROD,PCUL.NAME ULICA
from tu
left join paccount p on p.idcontract=tu.idcontract
left join ADDRESSTEXT(tu.idaddress) adt on (1=1)
left join postclass PC on (pc.idpost = p.Address)
left join postclass PCGOR on (pc.place = pcgor.idpost)
left join postclass PCUL on (pc.street = pcul.idpost)
left join postclass PCDOM on (pc.building = pcDOM.idpost)
left join postclass PCKVART on (pc.apartment = pcKVART.idpost)
where tu.idcontract>0
and p.stateof='1'
group by PC.street, PCGOR.NAME,PCUL.NAME
order by PCGOR.NAME, PCUL.NAME
union
select count(tu.paccount)Vsego_abonetov1, PC.street, PCGOR.NAME GOROD,PCUL.NAME ULICA
from tu
left join paccount p on p.idcontract=tu.idcontract
left join tmeterwh m on(m.idtmeter=tu.tmeter)
left join orders o on o.idtu=tu.idtu and o.typecnt_new=tu.tmeter and o.kod_rabot in ('У','З') and o.datework=
(select min(oo.datework) from orders oo where oo.idtu=o.idtu and oo.typecnt_new=o.typecnt_new)
left join tmeter_position tmp_new on tmp_new.id=o.tmeter_position_new
LEFT OUTER JOIN EMPLOYEE ee ON (O.IDWORKER = ee.IDEMP)
left join ADDRESSTEXT(tu.idaddress) adt on (1=1)
left join postclass PC on (pc.idpost = p.Address)
left join postclass PCGOR on (pc.place = pcgor.idpost)
left join postclass PCUL on (pc.street = pcul.idpost)
left join postclass PCDOM on (pc.building = pcDOM.idpost)
left join postclass PCKVART on (pc.apartment = pcKVART.idpost)
where tu.idcontract>0
and tmp_new.id='6'
and p.stateof='1'
group by PC.street, PCGOR.NAME,PCUL.NAME
order by PCGOR.NAME, PCUL.NAME

Вроде так. Если не заработает удали count

select count(a1.<поле по которому count>)Vsego_abonetov, a1.* from (
select PC.street, PCGOR.NAME GOROD,PCUL.NAME ULICA
from tu
left join paccount p on p.idcontract=tu.idcontract
left join ADDRESSTEXT(tu.idaddress) adt on (1=1)
left join postclass PC on (pc.idpost = p.Address)
left join postclass PCGOR on (pc.place = pcgor.idpost)
left join postclass PCUL on (pc.street = pcul.idpost)
left join postclass PCDOM on (pc.building = pcDOM.idpost)
left join postclass PCKVART on (pc.apartment = pcKVART.idpost)
where tu.idcontract>0
and p.stateof='1'
group by PC.street, PCGOR.NAME,PCUL.NAME
order by PCGOR.NAME, PCUL.NAME
union
select PC.street, PCGOR.NAME GOROD,PCUL.NAME ULICA
from tu
left join paccount p on p.idcontract=tu.idcontract
left join tmeterwh m on(m.idtmeter=tu.tmeter)
left join orders o on o.idtu=tu.idtu and o.typecnt_new=tu.tmeter and o.kod_rabot in ('У','З') and o.datework=
(select min(oo.datework) from orders oo where oo.idtu=o.idtu and oo.typecnt_new=o.typecnt_new)
left join tmeter_position tmp_new on tmp_new.id=o.tmeter_position_new
LEFT OUTER JOIN EMPLOYEE ee ON (O.IDWORKER = ee.IDEMP)
left join ADDRESSTEXT(tu.idaddress) adt on (1=1)
left join postclass PC on (pc.idpost = p.Address)
left join postclass PCGOR on (pc.place = pcgor.idpost)
left join postclass PCUL on (pc.street = pcul.idpost)
left join postclass PCDOM on (pc.building = pcDOM.idpost)
left join postclass PCKVART on (pc.apartment = pcKVART.idpost)
where tu.idcontract>0
and tmp_new.id='6'
and p.stateof='1'
group by PC.street, PCGOR.NAME,PCUL.NAME
order by PCGOR.NAME, PCUL.NAME)a1
where 1=1

Попробуй. Я немогу ручаться за правильность. так как у меня нет базы такой. Поиграйся, направление в эту сторону помоему правильное.
Нет невыполнимых задач, всё дело времени...

Последний раз редактировалось D-mon; 16.05.2008 в 10:19.
D-mon вне форума Ответить с цитированием
Старый 16.05.2008, 16:06   #5
andrianov123
 
Регистрация: 06.05.2008
Сообщений: 3
По умолчанию

D-mon
Не помогло! сейчас заново буду все пробывать!
andrianov123 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
при выполнении запроса в столбце "Дата сдачи" оставить даты, которые соответствуют введенному месяцу klukva666 Microsoft Office Access 5 10.03.2008 17:52
Объединить в один файл asale Microsoft Office Excel 2 12.02.2008 13:18
Нужно разбить те числа которые в одной ячейке по разным ячейчам в столбец Alexander_Gr Microsoft Office Excel 8 20.11.2007 08:02
Два запроса - один ExecSQL EdNovice БД в Delphi 1 27.06.2007 17:33