|
Соединение таблиц в запросе.
| ☑ |
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) здесь ключевое слово - комбинации.
сначала составляются все комбинации,
потом, из них выбираются отвечающие условию
(это на логическом уровне, разумеется, реальный оптимизатор запроса работает иначе)
у тебя ничего нет на первом шаге
нет комбинаций вообще
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший