|
Сначала соединение потом отбор (ГДЕ)?
| ☑ |
0
DirecTwiX
13.09.13
✎
23:13
|
Напомните пожалуйста. Я ведь прав?
|
|
1
exwill
13.09.13
✎
23:15
|
(0) Как СУБД решит.
|
|
2
МихаилМ
13.09.13
✎
23:15
|
в общем случае sql декларативный язык.
|
|
3
exwill
13.09.13
✎
23:15
|
(0) или ты о синтаксисе?
|
|
4
ДемонМаксвелла
13.09.13
✎
23:16
|
(0) в каком контексте?
если условие наложишь при левом соединении на таблицу, которая справа, то соединение станет внутренним
|
|
5
France
14.09.13
✎
00:18
|
(4) а если проверить?
|
|
6
DirecTwiX
14.09.13
✎
00:38
|
Вопрос про любое соединение и про поле, по которому не происходит соединение. Просто до соединения условие вроде как эффективнее накладывать - отсюда и вопрос.
|
|
7
ДемонМаксвелла
14.09.13
✎
01:44
|
(5) проиллюстрирую, что имел в виду на запросе:
ВЫБРАТЬ
Ном.Ссылка КАК Ном,
ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
ИЗ
Справочник.Номенклатура КАК Ном
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО Ном.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
ГДЕ
ЦеныНоменклатурыСрезПоследних.Цена >= 0
вот такой запрос покажет только ту номенклатуру, по которой есть цены больше нуля. Если здесь левое соединение заменить на внутреннее, ничего не изменится. Разумеется, если в условии использовать естьnull, то покажет всю номенклатуру
|
|
8
йети
14.09.13
✎
01:48
|
(0) не терзайся - просто помоги оптимизатору sql, используй ВТ для ГДЕ
|
|
9
lapinio
14.09.13
✎
02:52
|
Зачем условие где. Если соединение по регистру.
|
|
10
lapinio
14.09.13
✎
02:53
|
Попадут те записи из номенклатуры где есть запись в регистре
|
|
11
fyn
14.09.13
✎
10:02
|
(11) номенклатуру из регистра нужно взять и тогда никакие соединения будут не нужны
|
|
12
France
14.09.13
✎
10:26
|
(11) а если в регистре не всей номенклатуры?
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший