powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вопрос по запросу в SQl MSSQL2005
20 сообщений из 20, страница 1 из 1
Вопрос по запросу в SQl MSSQL2005
    #36533779
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как сделать так чтобы результат одного запроса можно было передать в качестве параметра в другой запрос в MSSQL2005 без подзапросов?
...
Рейтинг: 0 / 0
Вопрос по запросу в SQl MSSQL2005
    #36533847
НадеждаМ,
это как? Поясните свою мысль. О каких параметрах в виде результатов запросов идет речь? И чем непонравились подзапросы?
...
Рейтинг: 0 / 0
Вопрос по запросу в SQl MSSQL2005
    #36533993
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
во-первых:
подобный вопрос нужно быо задать в соответствующем форуме

раскройте тайну бытия (дайте точку опоры для суждений):
есть то-то и то-то и хочу то-то и то-то

Ваша задача решается, в завис-ти от .... :
- созд-е ф-и
- исп-е ХП
- подзапроса
- сохр-ем промеж.отбора в темп.табличку и тд. и т.п.
...
Рейтинг: 0 / 0
Вопрос по запросу в SQl MSSQL2005
    #36534159
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня 2 запроса. Один возвращает несколько строк записей. Хочу передать как параметр значения первого столбца результата этого запроса во второй.
...
Рейтинг: 0 / 0
Вопрос по запросу в SQl MSSQL2005
    #36534171
НадеждаМпередать как параметр значения первого столбца результата этого запроса во второй.Да разъясните же, наконец, ваше понимание процитированного? Где и в каком виде Вы видели такое? Ну чтобы понять о чем Вы тут просите? И почему Вы остановились именно на таком решении? Есть полная докаанность оптимальности этого способа?
...
Рейтинг: 0 / 0
Вопрос по запросу в SQl MSSQL2005
    #36534187
НадеждаМУ меня 2 запроса. Один возвращает несколько строк записей. Хочу передать как параметр значения первого столбца результата этого запроса во второй.Еще подумалось - а чем тут обычный join не подходит? Только из-за подзапростности? А чем так подзапросы вдруг стали плохими, да еще в MS SQL?
...
Рейтинг: 0 / 0
Вопрос по запросу в SQl MSSQL2005
    #36534224
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с join проблемы, никак не могу понять как он работает
...
Рейтинг: 0 / 0
Вопрос по запросу в SQl MSSQL2005
    #36534236
НадеждаМс join проблемы, никак не могу понять как он работаетНу так побольше конкретики дабы остальные могли понять Ваши проблемы. Заодно и работу join объясним. :)
Ну так давайте скритпы таблиц, немного исходных данных и ясное и четкое объяснение что из них надо получить.
...
Рейтинг: 0 / 0
Вопрос по запросу в SQl MSSQL2005
    #36534346
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select ci.n_dog, dms.dbo.fio3(ci.insured_id) as fios, dms.dbo.fio3(i.insured_id) as fioz

from contrins ci, insured i, agent a, contrinspol cip, dmsprg as dms, contrinsins cii

where 1=1
and ci.agent_id=a.agent_id
and cip.contrins_id=ci.contrins_id
and ci.n_dog between @n_dog and @pn_dog
and ci.dmsprg_id=dms.dmsprg_id
and cii.contrinspol_id=cip.contrinspol_id
and i.insured_id=cii.insured_id
and cip.type=1
and dms.code=101
order by ci.n_dog


select ltrim(rtrim(isnull(CONVERT(VARCHAR(12), cpay.datepay, 3),' '))+', '+rtrim(cpay.payment)) as monthsum
from contrinspay cpay, contrinspol cip, contrins ci, paytype pt
where
cpay.contrinspol_id=cip.contrinspol_id
and cip.contrins_id=ci.contrins_id
and cpay.type=pt.type
and cip.type=1
order by ci.n_dog

первый запрос возвращает записи вида

Номер договора (ci.n_dog) ФИО ФИО2
6654 ИВАНОВ ИВАНОВА
6656 КРАВЧЕНКО КРАВЧЕНКО
6657 ОСИПОВ ОСИПОВА
6657 ОСИПОВ ОСИПОВА

нужно во второй запрос передать поле ci.n_dog чтобы в нем по каждому договору соответствующие записи выбирались.
...
Рейтинг: 0 / 0
Вопрос по запросу в SQl MSSQL2005
    #36534457
НадеждаМ,
плохо, очень плохо. Такой синтаксис в MS SQL отмирает. Надо обязательно изучать join.
Вот, например, как выглядит Ваш переработанный первый запрос:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select ci.n_dog, dms.dbo.fio3(ci.insured_id) as fios, dms.dbo.fio3(i.insured_id) as fioz
from contrins ci on 
inner join agent a on ci.agent_id=a.agent_id
inner join contrinspol cip on cip.contrins_id=ci.contrins_id
inner join dmsprg as dms on ci.dmsprg_id=dms.dmsprg_id
inner join contrinsins cii on cii.contrinspol_id=cip.contrinspol_id
inner join insured i on i.insured_id=cii.insured_id
where ci.n_dog between @n_dog and @pn_dog
and cip.type= 1 
and dms.code= 101 
--order by ci.n_dog
При внимателном разглядывании можете увидеть, что вся переделка свелась в переносу условий из-под where.
По первому впечатлению оба Ваших запроса можно объединить в один с помощью таких же join'ов. Но для подтверждения этого нужно все то, что я просил в предыдущем своем посте.
Тему лучше перенести в форум по MS SQL там народу знающего больше и быстрее ответят. Тем более, что к фоксу соверенно никакого отношения не имеет.
...
Рейтинг: 0 / 0
Вопрос по запросу в SQl MSSQL2005
    #36534610
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМс join проблемы, никак не могу понять как он работает
Может, вот это поможет разобраться

http://forum.foxclub.ru/read.php?29,216597,216908#msg-216908
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Вопрос по запросу в SQl MSSQL2005
    #37525716
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый всем день. Снова есть вопрос по запросу MSSQL

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select pf.l as l, pf.pf_id, pf.l, pf.s, pf.a, pf.srsum, CONVERT(varchar( 20 ), pf.summa) as summa, pf.o,
	year(pf.p_n) as year, pf.p_n as per, pf.p_n, pf.p_k,
	 1  as blk, null as kol
		
	from plan pf
	group by pf.pf_id, pf.l, pf.s, pf.a, pf.srsum, pf.summa, pf.o, year(pf.p_n),pf.p_n, pf.p_k 
	
	union
	
	select pf2.l as l, null, null as lpu, null, null, null, 
	'Итого по ЛПУ за ' + (select ltrim(rtrim(str(DATEpart(q, p_n))))+' квартал '+ ltrim(rtrim(str(YEAR(p_n))))+'г.- ') +convert(varchar( 20 ),sum(pf2.summa))+' руб.', 
	null, year(pf2.p_n) as year, pf2.p_n as per, null as p_n, null,  2 ,(select count (*) from plan pf3 where pf3.lpu= 102  and pf2.P_N=pf3.p_n) as kol
		
	from PLAN pf2
	group by pf2.l, year(pf2.period_n), pf2.p_n, pf2.p_k
	order by  1 , 9 , 10 , 13 

как в результат не выводить те строки где kol=1 и blk=2
lpf_idlsasrsumsummaoyearperp_np_kblkkol102 216 102 31 8 6875 550.00 0.00 2005 2005-01-01 00:00:00 2005-01-01 00:00:00 2005-03-31 00:00:00 1 NULL102 NULL NULL NULL NULL NULL Итого - 550.00 руб. NULL 2005 2005-01-01 00:00:00 NULL NULL 2 1102 273 102 5 3 3800 114.00 0.00 2005 2005-04-01 00:00:00 2005-04-01 00:00:00 2005-06-30 00:00:00 1 NULL102 NULL NULL NULL NULL NULL Итого - 114.00 руб. NULL 2005 2005-04-01 00:00:00 NULL NULL 2 1102 704 102 5 5 3360 168.00 0.00 2005 2005-07-01 00:00:00 2005-07-01 00:00:00 2005-09-30 00:00:00 1 NULL102 NULL NULL NULL NULL NULL Итого - 168.00 руб. NULL 2005 2005-07-01 00:00:00 NULL NULL 2 1102 974 102 5 5 3360 168.00 0.00 2005 2005-10-01 00:00:00 2005-10-01 00:00:00 2005-12-31 00:00:00 1 NULL102 NULL NULL NULL NULL NULL Итого - 168.00 руб. NULL 2005 2005-10-01 00:00:00 NULL NULL 2 1102 NULL NULL NULL NULL NULL Итого - 1265.00 руб. NULL 2006 2006-01-01 00:00:00 NULL NULL 2 2
...
Рейтинг: 0 / 0
Вопрос по запросу в SQl MSSQL2005
    #37525804
SSn888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМ,

И что, вот и впрямь у Вас сработало

select pf.l as l , pf.pf_id, pf.l ,... и выдало такой результат что Вы привели?
ню-ню...
...
Рейтинг: 0 / 0
Вопрос по запросу в SQl MSSQL2005
    #37525839
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SSn888,

Cработало и выдало, я просто в том примере что тут написала названия полей сократила.
А так у мня все сработало и то, что приведено тут. Ну написала select pf.l as l , вместо select pf.l as ln ...
...
Рейтинг: 0 / 0
Вопрос по запросу в SQl MSSQL2005
    #37525855
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМкак в результат не выводить те строки где kol=1 и blk=2

добавить во второй подзапрос
Код: plaintext
1.
2.
3.
	from PLAN pf2
	where !(kol= 1  or blk= 2 )
	group by pf2.l, year(pf2.period_n), pf2.p_n, pf2.p_k
...
Рейтинг: 0 / 0
Вопрос по запросу в SQl MSSQL2005
    #37525871
SSn888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМSSn888,

Cработало и выдало, я просто в том примере что тут написала названия полей сократила.
А так у мня все сработало и то, что приведено тут. Ну написала select pf.l as l , вместо select pf.l as ln ...

Пожалуйста, не делайте так больше
Потому что желание отвечать человеку и как-то ему помогать когда он приводит не куски своего кода, а нечто сокращенное - резко падает
Простите, но тут даже если у кого и есть экстрасенсорные блоки восприятия несказанного - это тщательно скрывают
...
Рейтинг: 0 / 0
Вопрос по запросу в SQl MSSQL2005
    #37525874
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SSn888, Извините пожалуйста, больше не буду, исправлюсь.
...
Рейтинг: 0 / 0
Вопрос по запросу в SQl MSSQL2005
    #37532963
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе утро. Извините если вопрос тупой, но я что-то не могу сгруппироавть по полю quart

в запросе

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
select pf.l as ln, pf.pf_id, pf.l, pf.s, pf.a, pf.srsum, CONVERT(varchar( 20 ), pf.summa) as summa, pf.o,
	year(pf.p_n) as year, pf.p_n as per, pf.p_n, pf.p_k,
	 1  as blk, null as kol, DATEpart(q, p_n) as quart
		
	from plan pf
	group by pf.pf_id, pf.l, pf.s, pf.a, pf.srsum, pf.summa, pf.o, year(pf.p_n),pf.p_n, pf.p_k,  DATEpart(q, p_n)  
	
	union
	
	select pf2.l as ln, null, null as l, null, null, null, 
	'Итого по ЛПУ за ' + (select ltrim(rtrim(str(DATEpart(q, p_n))))+' квартал '+ ltrim(rtrim(str(YEAR(p_n))))+'г.- ') +convert(varchar( 20 ),sum(pf2.summa))+' руб.', 
	null, year(pf2.p_n) as year, pf2.p_n as per, null as p_n, null,  2 ,(select count (*) from plan pf3 where pf3.lpu= 102  and pf2.P_N=pf3.p_n) as kol, DATEpart(q, pf2.p_n) as quart

		
	from PLAN pf2
	group by pf2.l, year(pf2.period_n), pf2.p_n, pf2.p_k, DATEpart(q, p_n)  

	order by  1 , 9 , 10 , 13 


сейчас так

l pf_idlsasrsumsummaoyearperp_np_kblkkolquart1 7116 1 1 NULL NULL 1.00 0.00 2011 2011-01-01 00:00:00 2011-01-01 00:00:00 2011-01-31 00:00:00 1 NULL 11 7117 1 1 NULL NULL 1.00 0.00 2011 2011-02-01 00:00:00 2011-02-01 00:00:00 2011-02-28 00:00:00 1 NULL 11 7118 1 1 NULL NULL 1.00 0.00 2011 2011-03-01 00:00:00 2011-03-01 00:00:00 2011-03-31 00:00:00 1 NULL 1102 216 102 31 8 68.75 550.00 0.00 2005 2005-01-01 00:00:00 2005-01-01 00:00:00 2005-03-31 00:00:00 1 NULL 1102 273 102 5 3 38.00 114.00 0.00 2005 2005-04-01 00:00:00 2005-04-01 00:00:00 2005-06-30 00:00:00 1 NULL 2102 704 102 5 5 33.60 168.00 0.00 2005 2005-07-01 00:00:00 2005-07-01 00:00:00 2005-09-30 00:00:00 1 NULL 3102 974 102 5 5 33.60 168.00 0.00 2005 2005-10-01 00:00:00 2005-10-01 00:00:00 2005-12-31 00:00:00 1 NULL 4102 1112 102 31 14 78.36 1100.00 0.00 2006 2006-01-01 00:00:00 2006-01-01 00:00:00 2006-03-31 00:00:00 1 NULL 1102 1113 102 5 3 50.00 165.00 0.00 2006 2006-01-01 00:00:00 2006-01-01 00:00:00 2006-03-31 00:00:00 1 NULL 1102 NULL NULL NULL NULL NULL Итого 2006г.- 1265.00 руб. NULL 2006 2006-01-01 00:00:00 NULL NULL 2 null null


чтобы выглядело так
l pf_idlsasrsumsummaoyearperp_np_kblkkolquart1 7116 1 1 NULL NULL 1.00 0.00 2011 2011-01-01 00:00:00 2011-01-01 00:00:00 2011-01-31 00:00:00 1 NULL 11 7117 1 1 NULL NULL 1.00 0.00 2011 2011-02-01 00:00:00 2011-02-01 00:00:00 2011-02-28 00:00:00 1 NULL 11 7118 1 1 NULL NULL 1.00 0.00 2011 2011-03-01 00:00:00 2011-03-01 00:00:00 2011-03-31 00:00:00 1 NULL 1null nullnullnullnullnull Итого сумма 3null nullnullnullnullnull nullnull102 216 102 31 8 68.75 550.00 0.00 2005 2005-01-01 00:00:00 2005-01-01 00:00:00 2005-03-31 00:00:00 1 NULL 1102 273 102 5 3 38.00 114.00 0.00 2005 2005-04-01 00:00:00 2005-04-01 00:00:00 2005-06-30 00:00:00 1 NULL 2102 704 102 5 5 33.60 168.00 0.00 2005 2005-07-01 00:00:00 2005-07-01 00:00:00 2005-09-30 00:00:00 1 NULL 3102 974 102 5 5 33.60 168.00 0.00 2005 2005-10-01 00:00:00 2005-10-01 00:00:00 2005-12-31 00:00:00 1 NULL 4102 1112 102 31 14 78.36 1100.00 0.00 2006 2006-01-01 00:00:00 2006-01-01 00:00:00 2006-03-31 00:00:00 1 NULL 1102 1113 102 5 3 50.00 165.00 0.00 2006 2006-01-01 00:00:00 2006-01-01 00:00:00 2006-03-31 00:00:00 1 NULL 1102 NULL NULL NULL NULL NULL Итого 2006г.- 1265.00 руб. NULL 2006 2006-01-01 00:00:00 NULL NULL 2 null null
...
Рейтинг: 0 / 0
Вопрос по запросу в SQl MSSQL2005
    #37533149
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не могу понять в какое место воткнуть datepart() в группировке.
...
Рейтинг: 0 / 0
Вопрос по запросу в SQl MSSQL2005
    #37535343
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо всем кто участвовал или просто даже просматривал тему. Вопрос решен.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вопрос по запросу в SQl MSSQL2005
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]