SELECT (только из одной тааблицы) FROM t1 JOIN t2. Объединение не выполняется?

teepok
Дата: 21.11.2008 11:18:49
Добрый день, прошу прощеня если повторюсь, но ответа на свой вопрос среди других тем не нашел.
Видя, что в дебатах по JOINу важное место занимает версия оракла, скажу что у меня 10, вопрос:
почему

select t1.*
from Table1 t1 join Table2 t2 on t1.Id=t2.Id
where t1.Date = '01 Jan 2008'

вернет все записи таблицы t1, как буд то JOINa не делалось вовсе. И план выполнения запроса это подтверждает.
все правильно работает если я делаю:

select t1.*, t2.*
from Table1 t1 join Table2 t2 on t1.Id=t2.Id
where t1.Date = '01 Jan 2008'

Это нормальное поведение Оракла или я чего то недопонимаю?
SQL*Plus
Дата: 21.11.2008 11:29:06
teepok
Добрый день, прошу прощеня если повторюсь, но ответа на свой вопрос среди других тем не нашел.
Видя, что в дебатах по JOINу важное место занимает версия оракла, скажу что у меня 10, вопрос:
почему

select t1.*
from Table1 t1 join Table2 t2 on t1.Id=t2.Id
where t1.Date = '01 Jan 2008'

вернет все записи таблицы t1, как буд то JOINa не делалось вовсе. И план выполнения запроса это подтверждает.
все правильно работает если я делаю:

select t1.*, t2.*
from Table1 t1 join Table2 t2 on t1.Id=t2.Id
where t1.Date = '01 Jan 2008'

Это нормальное поведение Оракла или я чего то недопонимаю?

При оформлении кода используйте, пожалуйста, тег SRC данного форума.
Этим вы повысите свои шансы на получение ответа.
teepok
Дата: 21.11.2008 11:31:14
SQL*Plus,

спасибо, буду иметь ввиду.
SQL*Plus
Дата: 21.11.2008 11:34:59
teepok
Добрый день, прошу прощеня если повторюсь, но ответа на свой вопрос среди других тем не нашел.
Видя, что в дебатах по JOINу важное место занимает версия оракла, скажу что у меня 10, вопрос:
почему

select t1.*
from Table1 t1 join Table2 t2 on t1.Id=t2.Id
where t1.Date = '01 Jan 2008'

вернет все записи таблицы t1, как буд то JOINa не делалось вовсе. И план выполнения запроса это подтверждает.
все правильно работает если я делаю:

select t1.*, t2.*
from Table1 t1 join Table2 t2 on t1.Id=t2.Id
where t1.Date = '01 Jan 2008'

Это нормальное поведение Оракла или я чего то недопонимаю?
Да, нормальное.
поскольку для получения результата соединение таблиц выполнять не нужно,
и оптимизатор это понимает.
teepok
Дата: 21.11.2008 11:39:28
SQL*Plus
teepok
Добрый день, прошу прощеня если повторюсь, но ответа на свой вопрос среди других тем не нашел.
Видя, что в дебатах по JOINу важное место занимает версия оракла, скажу что у меня 10, вопрос:
почему

select t1.*
from Table1 t1 join Table2 t2 on t1.Id=t2.Id
where t1.Date = '01 Jan 2008'

вернет все записи таблицы t1, как буд то JOINa не делалось вовсе. И план выполнения запроса это подтверждает.
все правильно работает если я делаю:

select t1.*, t2.*
from Table1 t1 join Table2 t2 on t1.Id=t2.Id
where t1.Date = '01 Jan 2008'

Это нормальное поведение Оракла или я чего то недопонимаю?
Да, нормальное.
поскольку для получения результата соединение таблиц выполнять не нужно,
и оптимизатор это понимает.


Как это не нужно? мне надо t1.*, для которых СУЩЕСТВУЮТ записи во второй таблице (from Table1 t1 join Table2 t2 on t1.Id=t2.Id).
реплика
Дата: 21.11.2008 11:40:20
SQL*Plus

select t1.*
from Table1 t1 join Table2 t2 on t1.Id=t2.Id
where t1.Date = '01 Jan 2008'
Да, нормальное.
поскольку для получения результата соединение таблиц выполнять не нужно,
и оптимизатор это понимает.

То есть как это НЕ НУЖНО????? А если в Т2 нет соответствующих записей????
за чем же тогда нужен LEFT OUTER JOIN?

можно ссылочку, где документировано ТАКОЕ поведение оптимизатора?
сиська
Дата: 21.11.2008 11:44:27
ну накинулись сразу капслоком писать
ошибся человек

глюк это
teepok
Дата: 21.11.2008 11:48:00
сиська
ну накинулись сразу капслоком писать
ошибся человек

глюк это

Чей глюк? :)

и как мне тогда добиться полученного результата, всегда в операторе select указывать хотя бы по одному полю из каждой таблицы объединения?
сиська
Дата: 21.11.2008 11:50:24
мне кажется лучше тебе оракл пропатчить до 10.0.4
но лучше послушать чего отцы скажут
teepok
Дата: 21.11.2008 11:57:30
Отцы что-то пмолчат :))