Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / [игнор отключен] [закрыт для гостей] / Запросы в 1С 8 / 10 сообщений из 10, страница 1 из 1
07.11.2009, 01:23
    #36296060
Timon_a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы в 1С 8
Нужна помощь. Есть две таблицы, необходимо из одной выбрать данные, которые не повторяются во второй. Языком SQL делается просто:
Код: plaintext
1.
2.
select * from Table1 a
where a.id not in (select id from Table2)
или
Код: plaintext
1.
2.
select * from Table1 a
where not exists (select  1  from Table2 b  where b.id = a.id)
Как тоже самое написать в 1С 8 ?
...
Рейтинг: 0 / 0
08.11.2009, 12:32
    #36297101
Estel I
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы в 1С 8
Однако первый запрос прямо также и пишется. Можно даже английскими термами
...
Рейтинг: 0 / 0
08.11.2009, 13:06
    #36297125
vitkhv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы в 1С 8
Estel I,
Только вместо id будет ссылка.
...
Рейтинг: 0 / 0
08.11.2009, 18:01
    #36297381
Нельсон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы в 1С 8
про второй запрос все скромно молчат ибо "exists" в 1С не поддерживается!
...
Рейтинг: 0 / 0
09.11.2009, 08:25
    #36297856
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы в 1С 8
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
ВЫБРАТЬ
	Номенклатура.ПометкаУдаления,
	Номенклатура.Наименование,
	Номенклатура.Код
ИЗ
	Справочник.Номенклатура КАК Номенклатура
		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
			Номенклатура.Ссылка КАК Ссылка
		ИЗ
			Справочник.Номенклатура КАК Номенклатура
		ГДЕ
			(НЕ Номенклатура.ПометкаУдаления)) КАК Неудаленные
		ПО Номенклатура.Ссылка = Неудаленные.Ссылка.Ссылка  
Где Неудаленные.Ссылка Есть NULL

наверное не будет работать? ;-)

exsist кстати не очень быстро работает
...
Рейтинг: 0 / 0
09.11.2009, 09:56
    #36297979
Нектотам
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы в 1С 8
leafexsist кстати не очень быстро работаетДля MS SQL и случая, когда left join используется для замены not exists это не правда. Планы выполнения запросов одинаковы и содержат "Left Anti Semi Join". А для случаев замены where exists даже обычно наоборот (т.к. придётся вставлять distinct).
...
Рейтинг: 0 / 0
09.11.2009, 10:23
    #36298034
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы в 1С 8
ну может и так
я давно читал толстую красную книгу по скл
там целое описание этого явления
но точного ответа нет
хотя может подзабыл? )
...
Рейтинг: 0 / 0
09.11.2009, 10:36
    #36298059
Нектотам
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы в 1С 8
leaf,

Для некоторых случаев подзапросов с exists действительно возможны не самые оптимальные планы, но не в случае с заменой на left join. Ну и не для данного случая а в целом - такой keft join предполагает, что в правой таблице (запросе) все поля not null.
...
Рейтинг: 0 / 0
09.11.2009, 10:54
    #36298132
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы в 1С 8
ну вроде там налл только те поля которые помечены на удаление? )
не пойму где грабли - научите?
...
Рейтинг: 0 / 0
09.11.2009, 12:11
    #36298374
PA
PA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы в 1С 8
Нельсонпро второй запрос все скромно молчат ибо "exists" в 1С не поддерживается!
Ну, например в 1цэ это можно так обойти:
Код: plaintext
1.
select * from Table1 a
where not  1  in (select top  1   1  from Table2 b  where b.id = a.id)
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / Запросы в 1С 8 / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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