Имя: Пароль:
1C
1С v8
Соединение таблиц в запросе.
,
0 iHell
 
07.04.13
16:29
Чую вопрос тупой) Подскажите почему этот запрос
ВЫБРАТЬ
   ДокументРасходнаяНакладная.Ссылка,
   ДокументРасходнаяНакладная.Проект,
   ДокументРасходнаяНакладная.Контрагент,
   ДокументРасходнаяНакладная.Сумма,
   ДокументРасходнаяНакладная.МоментВремени
ИЗ
   Документ.РасходнаяНакладная КАК ДокументРасходнаяНакладная
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ КритерийОтбора.ПоНоменклатуре(&Номенклатура) КАК ПоНоменклатуре
       ПО (ИСТИНА)

в случае если в таблице критерия нет данных, ничего не выдает, хотя условие поставлено истина ?
1 Defender aka LINN
 
07.04.13
16:42
потому что "в таблице критерия нет данных"
2 exwill
 
07.04.13
16:44
(0) Так на то оно и внутреннее. Соединение-то.
3 cw014
 
07.04.13
16:44
Левое соединение сделай
4 iHell
 
07.04.13
16:45
(2) Но условие соединения же удовлетворяется ?
5 iHell
 
07.04.13
16:46
Это чисто теоретический вопрос, просто хочу понять, почему не выводится данные.
6 exwill
 
07.04.13
16:50
(4) Нет. Смысл твоего условия: соединить с любой записью.
Результат запроса при внутреннем соединении по условию ИСТИНА: произведение двух таблиц. Если один из множителей 0, тогда произведение 0.
7 exwill
 
07.04.13
16:51
+(6) ... соединить с КАЖДОЙ, конечно (не с любой)
8 iHell
 
07.04.13
16:52
(6) А разве не должна быть комбинация всех полей выборки друг с другом ? Т.е. если я возьму что-нибудь из критерия отбора, то там будет просто null ?
9 exwill
 
07.04.13
16:54
(8) Это называется ЛЕВОЕ СОЕДИНЕНИЕ.
10 iHell
 
07.04.13
16:55
(9) Это называется перекрестное соединение.
11 exwill
 
07.04.13
16:58
(10) кем называется?
12 iHell
 
07.04.13
16:59
Вот определение из справки:

[ВНУТРЕННЕЕ] СОЕДИНЕНИЕ означает, что из обеих исходных таблиц – источников данных в результат запроса необходимо включить только те комбинации записей, которые соответствуют указанному условию.
13 exwill
 
07.04.13
17:07
(12) здесь ключевое слово - комбинации.
сначала составляются все комбинации,
потом, из них выбираются отвечающие условию
(это на логическом уровне, разумеется, реальный оптимизатор запроса работает иначе)
у тебя ничего нет на первом шаге
нет комбинаций вообще