Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Соединение таблиц в запросе. (http://forums.kuban.ru/f1040/soedinenie_tablic_v_zaprose-2843940.html)

satord 18.07.2012 14:33

Соединение таблиц в запросе.
 
Добрый день.Платформа 8.2.15.317 файловая база.
Выбираю номенклатуру из документов запросом.
Запрос.Текст= "ВЫБРАТЬ
| Док2.Номенклатура КАК Номенклатура2,
| Док2.Количество КАК Количество2,
| Док1.Номенклатура КАК Номенклатура,
| Док1.Количество КАК Количество
|ИЗ
| Документ.ПоступлениеТоваровИУслуг.Товары КАК Док2
| ПОЛНОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровИУслуг.Товары КАК Док1
| ПО (Док1.Номенклатура = Док2.Номенклатура)
|ГДЕ
| Док2.Ссылка = &ВыбДокумент2
| И Док1.Ссылка = &ВыбДокумент1";

Выводится только совпадающая в документах номенклатура,хотя вид соединения таблиц в запросе используется различный: левое,правое,полное.

EarlyBird 18.07.2012 14:35

бррррррр!

EarlyBird 18.07.2012 14:36

скажи лучше, чё хотел достичь этим запросом?

satord 18.07.2012 14:38

Понятно что брррр,но почему не выполняется вывод результатов согласно применяемому соединению.

angro 18.07.2012 14:47

значит совпадает, должно все выводить.
или что-то не договорил

Lexusss 18.07.2012 14:48

Потому как если не найдется второй документ по заданному условию соединения, то ссылка этого дока будет равна NULL, а не &ВыбДокумент

satord 18.07.2012 14:52

Да,запрос примитивный,но два документа существуют реально,проверял во внешней обработке через параметры запроса,а вот результат такой.Для вас проверить дело пяти минут.

angro 18.07.2012 15:12

хм, не работает

angro 18.07.2012 15:25

а вот так работает

выбрать
*
поместить док2
из
Документ.ПоступлениеТоваровУслуг.Товары
где
Ссылка = &ВыбДокумент2
;
выбрать
*
поместить док1
из
Документ.ПоступлениеТоваровУслуг.Товары
где
Ссылка = &ВыбДокумент1
;

выбрать
Док2.Номенклатура КАК Номенклатура2,
Док2.Количество КАК Количество2
,Док1.Номенклатура КАК Номенклатура,
Док1.Количество КАК Количество
ИЗ
док2 КАК Док2
ПОЛНОЕ СОЕДИНЕНИЕ док1 КАК Док1
ПО Док1.Номенклатура = Док2.Номенклатура

bma1 18.07.2012 15:36

дык все понятно. Сперва происходит объекдинение, появляется таблица типа
Док1 Ном1 Кол1 Док2 Ном2 Кол2
Док1 Ном1 Кол1 Нулл Нулл Нулл
Нулл Нулл Нулл Док2 Ном2 Кол2

А потом на эту табицу накладывается условие ГДЕ
До1 = &Док1 И Док2 = &Док2

satord 18.07.2012 15:39

Спасибо за помощь, истинные профи.:)

angro 18.07.2012 15:44

точно, лексус сразу сказал

bma1 18.07.2012 16:14

2(10) лучше почитай о порядке исполнения операторов в запросах SQL, тоже сможешь выдавать себя за профи ;)

satord 19.07.2012 07:45

(12)полезное замечание,приму к сведению.


Текущее время: 19:22. Часовой пояс GMT +3.