Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 проблемы join  [new]
noTpyJI
Member

Откуда:
Сообщений: 116
Всем доброго времени суток, возникли проблемы при использовании джоинов
есть два запроса которые я хочу объединить в один но у меня не получается.

select O_Incom.idshiper, idjurperson from R_Jurperson
		left join O_Incom
			ON O_Incom.idshiper = R_Jurperson.idjurperson 
	where idshiper is null

результат запроса

idshiper idjurperson
----------- -----------
NULL 10
NULL 5

(строк обработано: 2)


select idfirm, idjurperson from R_Jurperson
		left join O_Incom
			ON O_Incom.idFirm = R_Jurperson.idjurperson 
where idFirm is null


результат запроса

idfirm idjurperson
----------- -----------
NULL 0
NULL 9
NULL 7
NULL 10
NULL 4
NULL 5
NULL 2
NULL 8

(строк обработано: 8)


если я правильно понял выше перечисленное можно написать одним скриптом.

select O_Incom.idshiper, idjurperson from R_Jurperson
		left join O_Incom
			ON O_Incom.idshiper = R_Jurperson.idjurperson and O_Incom.idFirm = R_Jurperson.idjurperson 
	where idFirm is null 
order by idjurperson


в результате я получаю

idshiper idjurperson
----------- -----------
NULL 0
NULL 2
NULL 3
NULL 4
NULL 5
NULL 6
NULL 7
NULL 8
NULL 9
NULL 10

(строк обработано: 10)


а ожидаю

idshiper idjurperson
----------- -----------
NULL 0
NULL 2
NULL 4
NULL 5
NULL 7
NULL 8
NULL 9
NULL 10

(строк обработано: 10)
Люди добрые помогите! что я не так делаю?
просьба строго не судить!!!

вообще весь скрипт выглядит так

+
select * from 
	(select incom=idjurperson from R_Jurperson R_J
		left join O_Incom O_I
			ON O_I.idshiper = R_J.idjurperson and O_I.idfirm = R_J.idjurperson
		where O_I.idshiper is null and O_I.idFirm is null) as incom
JOIN
	(select account=idjurperson from R_Jurperson R_J
		left join O_Account O_A
			ON O_A.idshiper = R_J.idjurperson and O_A.idreceiver = R_J.idjurperson
		where O_A.idshiper is null and O_A.idreceiver is null) as account
ON incom.incom = account.account
join
	(select invoice=idjurperson from R_Jurperson R_J
		left join O_Invoice O_I_V
			ON O_I_V.idShiper = R_J.idjurperson and O_I_V.idreceiver = R_J.idjurperson and O_I_V.idPayer = R_J.idjurperson
		where O_I_V.idshiper is null and O_I_V.idreceiver is null and O_I_V.idPayer is null) as invoice
ON account.account = invoice.invoice
join
	(select names=idjurperson from R_Jurperson R_J
	left join r_names r_n
			ON r_n.idShiper = R_J.idjurperson
	where r_n.idshiper is null) as names
ON invoice.invoice = names.names 
6 ноя 12, 18:08    [13428678]     Ответить | Цитировать Сообщить модератору
 Re: проблемы join  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
noTpyJI
есть два запроса которые я хочу объединить в один но у меня не получается.

Объедини при помощи UNION ALL два запроса :)
6 ноя 12, 18:26    [13428734]     Ответить | Цитировать Сообщить модератору
 Re: проблемы join  [new]
Добрый Э - Эх
Guest
В первых двух выборках и упоминания о idjurperson=3 и idjurperson=6 не было. Откуда они взялись в объединенной выборке?
Банальный UNION своих запросов не пробовал?
6 ноя 12, 18:27    [13428742]     Ответить | Цитировать Сообщить модератору
 Re: проблемы join  [new]
invm
Member

Откуда: Москва
Сообщений: 9913
select idfirm, idjurperson from R_Jurperson
		left join O_Incom
			ON O_Incom.idFirm = R_Jurperson.idjurperson 
where idFirm is null

union /*all*/

select O_Incom.idshiper, idjurperson from R_Jurperson
		left join O_Incom
			ON O_Incom.idshiper = R_Jurperson.idjurperson 
	where idshiper is null
6 ноя 12, 18:28    [13428748]     Ответить | Цитировать Сообщить модератору
 Re: проблемы join  [new]
Добрый Э - Эх
Guest
trew
Объедини при помощи UNION ALL два запроса :)
Тогда еще DISTINCT поверху наложить придется. Уж пусть сразу делает UNION и не мучается.
6 ноя 12, 18:28    [13428752]     Ответить | Цитировать Сообщить модератору
 Re: проблемы join  [new]
noTpyJI
Member

Откуда:
Сообщений: 116
у меня 4 таблицы в каждой по 3 параметра надо проверить, union я использовал но скрипт слишком длиный
хотел сократить, а тут такое!!! А хотелось сократить как первом посте в конце написал.


+
select * from
(select * from	
	(select O_Incom=idjurperson from R_Jurperson
		left join O_Incom
			ON O_Incom.idshiper = R_Jurperson.idjurperson 
		where o_incom.idshiper is null
		group by idjurperson 
			union
		select idjurperson from R_Jurperson
		left join O_Incom
			ON o_incom.idfirm = R_Jurperson.idjurperson
		where o_incom.idshiper is null) as juperson1
inner join
	(select account=idjurperson from R_Jurperson
		left join O_Account
			ON o_account.idshiper = R_Jurperson.idjurperson or o_account.idreceiver = R_Jurperson.idjurperson
		where o_account.idshiper is null) as juperson2
		ON juperson1.O_Incom = juperson2.account
inner join
	(select o_invoice=idjurperson from R_Jurperson
		left join o_invoice
			ON o_invoice.idShiper = R_Jurperson.idjurperson
		where o_invoice.idshiper is null
			union
		select idjurperson from R_Jurperson
                left join o_invoice
			ON o_invoice.idreceiver = R_Jurperson.idjurperson
		where o_invoice.idreceiver is null
			union
		select idjurperson from R_Jurperson
		left join o_invoice
			ON o_invoice.idPayer = R_Jurperson.idjurperson
		where o_invoice.idPayer is null) as juperson3
		ON juperson2.account = juperson3.o_invoice
inner join
	(select r_names=idjurperson from R_Jurperson
	left join r_names
			ON r_names.idShiper = R_Jurperson.idjurperson
	where r_names.idshiper is null) as juperson4
	ON juperson3.o_invoice = juperson4.r_names) as a
6 ноя 12, 19:58    [13429033]     Ответить | Цитировать Сообщить модератору
 Re: проблемы join  [new]
noTpyJI
Member

Откуда:
Сообщений: 116
Оказалось что крайний скрипт в моем посте работает некорректно при использование
UNION, скрипт не прошел испытание на тестовой базе.
Зато с INTERSECT работает.

так мне все таки интересно это я что-то неправильно делаю!
И вообще можно ли решить мою задачу.
7 ноя 12, 10:26    [13430950]     Ответить | Цитировать Сообщить модератору
 Re: проблемы join  [new]
noTpyJI
Member

Откуда:
Сообщений: 116
мда, на форуме активность ноль!!!
15 ноя 12, 00:17    [13475678]     Ответить | Цитировать Сообщить модератору
 Re: проблемы join  [new]
qwerty112
Guest
noTpyJI
мда, на форуме активность ноль!!!

https://www.sql.ru/forum/actualthread.aspx?tid=127456 п.6

выучи наизусть
15 ноя 12, 00:38    [13475736]     Ответить | Цитировать Сообщить модератору
 Re: проблемы join  [new]
Glory
Member

Откуда:
Сообщений: 104751
noTpyJI
мда, на форуме активность ноль!!!

Отдельная тема <> форум
15 ноя 12, 11:28    [13476885]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить