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