powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASA 8 -> ASA 9
16 сообщений из 41, страница 2 из 2
ASA 8 -> ASA 9
    #36456435
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
amakhiniLLer, экранировать или нет - это как раз зависит от обработки на клиенте, и смысл будет разные или отсутсвие записей или нулевые обороты.
Ну тогда не экранируйте. Обновите клиента и будет счастье.

P.S. left outer join делается не ко всем перечисленным до него таблицам через запятую, а к одной сущности. В качестве такой сущности может идти соединение других таблиц. Запятая не является соединением.
Поэтому конструкция
Код: plaintext
1.
FROM A,B left outer join C on C.a=A.b
WHERE A.c=B.d
не является корректной. И дело не в оптимизаторе.
Если и читать, то только ANSI SQL, ASA тут ни причем.
...
Рейтинг: 0 / 0
ASA 8 -> ASA 9
    #36456440
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
amakhinСинтаксически запрос был правильный
Нет.
...
Рейтинг: 0 / 0
ASA 8 -> ASA 9
    #36456527
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iLLerПоэтому конструкция
Код: plaintext
1.
FROM A,B left outer join C on C.a=A.b
WHERE A.c=B.d
не является корректной.Вообще-то, эта конструкция вполне даже работающая. Она не чиста с точки зрения стандартов, но все сервера где я ее пробовал (включая ASE 7-11) прекрасно ее отрабатывают.
...
Рейтинг: 0 / 0
ASA 8 -> ASA 9
    #36459009
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlВообще-то, эта конструкция вполне даже работающая. Она не чиста с точки зрения стандартов, но все сервера где я ее пробовал (включая ASE 7-11) прекрасно ее отрабатывают.
Хм. Если спичка лезет в замочную скважину, это еще не значит, что это ключ.
Если оптимизатор пропускает такую конструкцию, значит он ОДНОЗНАЧНО считает, что сначала перемножит две таблицы A и B, и только после этого приступает к рассмотрению возможностей подсоединения третьей, C. Не очень умный оптимизатор, так скажем. Откуда ему заранее известно, что так будет проще, а не сначала соединить B и C, и только потом перемножить с A?! Ему это не может быть известно, а значит множество потенциальных планов изначально искусственно ограничено, и внедрен именно такой подход к разбору синтаксиса.
"Работающая" еще не значит корректная. Примерно тоже самое, что написать в where условие "0/0=0/0", вроде ничего не меняет, однако некорректно.
...
Рейтинг: 0 / 0
ASA 8 -> ASA 9
    #36459074
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iLLerWhite OwlВообще-то, эта конструкция вполне даже работающая. Она не чиста с точки зрения стандартов, но все сервера где я ее пробовал (включая ASE 7-11) прекрасно ее отрабатывают.
Хм. Если спичка лезет в замочную скважину, это еще не значит, что это ключ.
Если оптимизатор пропускает такую конструкцию, значит он ОДНОЗНАЧНО считает, что сначала перемножит две таблицы A и B, и только после этого приступает к рассмотрению возможностей подсоединения третьей, C.Вообще-то, он сначала сделает B&C, а потом добавит A.

iLLer"Работающая" еще не значит корректная.А с этим я не спорю.
...
Рейтинг: 0 / 0
ASA 8 -> ASA 9
    #36459132
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlВообще-то, он сначала сделает B&C, а потом добавит A.
Я наверно "не въехал". А как он сможет???? Если для соединения B и C ему нужно посчитать условие "C.a=A.b", а в нем упоминается еще не проявленная A... Возможно оптимизаторы пропускающее такое и не такие простые. Видимо есть какое-то объяснение для существования такой конструкции.
...
Рейтинг: 0 / 0
ASA 8 -> ASA 9
    #36459147
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iLLerWhite OwlВообще-то, он сначала сделает B&C, а потом добавит A.
Я наверно "не въехал". А как он сможет???? Если для соединения B и C ему нужно посчитать условие "C.a=A.b", а в нем упоминается еще не проявленная A... Возможно оптимизаторы пропускающее такое и не такие простые. Видимо есть какое-то объяснение для существования такой конструкции.эээ.... прошу прощения, я не внимательно посмотрел на селект что с чем связывается.
В общем то да, без приведения этого к единому знаменателю, в смысле без перевода связей в тот или другой синтаксис эту фигню не разобрать.
...
Рейтинг: 0 / 0
ASA 8 -> ASA 9
    #36459405
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iLLer wrote:

> Хм. Если спичка лезет в замочную скважину, это еще не значит, что это ключ.
> Если оптимизатор пропускает такую конструкцию, значит он ОДНОЗНАЧНО
> считает, что сначала перемножит две таблицы A и B, и только после этого
> приступает к рассмотрению возможностей подсоединения третьей, C.

Форма записи SQL-запроса никак не связана со способом его обработки.
Ну и стало быть все остальные "выводы" также неоправданы.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
ASA 8 -> ASA 9
    #36460773
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

Наверно Вы хотели сказать, что форма записи не должна определять способ выполнения. Конечно, в теории это так и есть. Я говорил лишь про сервера, которые глотают такую фигню. И факт этого глотания говорит лишь об одном, что некорректность соединения B и C сервер может не заметить только в одном случае, когда он априори и не пытается проанализировать эту возможность. В противном случае он бы возвращал ошибку. А раз не возвращает, значит подход к анализу усеченный.
Я правильно Вас понимаю, что Вы допускаете возможность существования некоего гипотетического сервера, который бы с одной стороны молча принимал такую конструкцию, а с другой, при построении плана выполнения заценивал все возможные стоимости включая подход сначала B и C, а потом перемножение с A?! И, очевидно, натыкаясь на ошибку тупо отбрасывал этот план с неудавшейся стоимостью, а оставлял тот, который позволил бы выполнить запрос?
...
Рейтинг: 0 / 0
ASA 8 -> ASA 9
    #36460834
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iLLer wrote:

> Наверно Вы хотели сказать, что форма записи не должна определять способ
> выполнения. Конечно, в теории это так и есть.

Это и на практике такое есть.

Я говорил лишь про
> сервера, которые глотают такую фигню. И факт этого глотания говорит лишь
> об одном, что некорректность соединения B и C сервер может не заметить
> только в одном случае, когда он априори и не пытается проанализировать
> эту возможность. В противном случае он бы возвращал ошибку. А раз не
> возвращает, значит подход к анализу усеченный.

Что-то очень мало смысла в вышеприведённом.

В чём по-твоему заключается "некорректность соединения B и C" ?

> Я правильно Вас понимаю, что Вы допускаете возможность существования
> некоего гипотетического сервера, который бы с одной стороны молча
> принимал такую конструкцию, а с другой, при построении плана выполнения
> заценивал все возможные стоимости включая подход сначала B и C, а потом
> перемножение с A?!

Я не допускаю, я просто знаю, что они есть.

И, очевидно, натыкаясь на ошибку тупо отбрасывал этот
> план с неудавшейся стоимостью, а оставлял тот, который позволил бы
> выполнить запрос?

Отбрасывает сервер какие-то планы или нет -- никак не связано
с способом записи JOIN-а в запросе.

Что

FROM A,B left outer join C on C.a=A.b
WHERE A.c=B.d

что

FROM A
join B on A.c=B.d
left outer join C on C.a=A.b
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
ASA 8 -> ASA 9
    #36461073
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

Может Вы тоже не заметили "прикола"?
Хорошо. Гипотетический сервер существует. Представим, что мы это он. Попытаемся заценить стоимость обработки запроса в случае, когда мы сначала хотим пересечь B и C, и только потом A. Чтобы посчитать общую стоимость, нужно посчитать стоимость частей. Какова будет стоимость "B left outer join C on C.a=A.b"? Вы можете прикинуть, при условии, что Вы вообще не знаете что такое A.b, т.к. отложили A на потом! Оценка невозможна, т.к. на соединение B и C нельзя наложить условие "C.a=A.b". Вот и ошибка синтаксиса.

Поэтому, либо слепой оптимизатор, либо ошибка синтаксиса.
...
Рейтинг: 0 / 0
ASA 8 -> ASA 9
    #36461225
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iLLer wrote:

> Может Вы тоже не заметили "прикола"?
> Хорошо. Гипотетический сервер существует. Представим, что мы это он.
> Попытаемся заценить стоимость обработки запроса в случае, когда мы
> сначала хотим пересечь B и C, и только потом A.

A нельзя после C. C -- внутренняя.

Можно только A, B, C
либо B, A, C
либо A, C, B

> вообще не знаете что такое A.b, т.к. отложили A на потом! Оценка
> невозможна, т.к. на соединение B и C нельзя наложить условие "C.a=A.b".

Здесь нет никакой ошибки синтаксиса. По семантике операции left outer join
A должно быть перед С. А вот при чём тут B, или как его JOIN записан --
не понятно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
ASA 8 -> ASA 9
    #36461648
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iLLerЯ правильно Вас понимаю, что Вы допускаете возможность существования некоего гипотетического сервера, который бы с одной стороны молча принимал такую конструкцию, а с другой, при построении плана выполнения заценивал все возможные стоимости включая подход сначала B и C, а потом перемножение с A?! И, очевидно, натыкаясь на ошибку тупо отбрасывал этот план с неудавшейся стоимостью, а оставлял тот, который позволил бы выполнить запрос?
Погоди, о каком гипотетическом серевере ты говоришь? У нас в рассмотрении совершенно не гипотетический, а вполне реальный ASA9. В котором оптимизатор ВСЕГДА переводит любые связи между таблицами в JOIN синтакс прежде чем начинает строить планы. Это было одной из рекламных завлекаловок когда девятка выходила.
...
Рейтинг: 0 / 0
ASA 8 -> ASA 9
    #36461800
Sergey Orlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwliLLerЯ правильно Вас понимаю, что Вы допускаете возможность существования некоего гипотетического сервера, который бы с одной стороны молча принимал такую конструкцию, а с другой, при построении плана выполнения заценивал все возможные стоимости включая подход сначала B и C, а потом перемножение с A?! И, очевидно, натыкаясь на ошибку тупо отбрасывал этот план с неудавшейся стоимостью, а оставлял тот, который позволил бы выполнить запрос?
Погоди, о каком гипотетическом серевере ты говоришь? У нас в рассмотрении совершенно не гипотетический, а вполне реальный ASA9. В котором оптимизатор ВСЕГДА переводит любые связи между таблицами в JOIN синтакс прежде чем начинает строить планы. Это было одной из рекламных завлекаловок когда девятка выходила.
Вот поэтому, 9-ка и выдает оишбку в отличии от 8-ки...
...
Рейтинг: 0 / 0
ASA 8 -> ASA 9
    #36462245
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Здесь нет никакой ошибки синтаксиса. По семантике операции left outer join
A должно быть перед С. А вот при чём тут B, или как его JOIN записан --
не понятно.

Я кажется понял на что Вы намекаете. Т.е., следуя Вашим утверждениям, следующий запрос уже имеет ошибку синтаксиса, т.к. A упоминается не перед, а после C?!
Код: plaintext
1.
2.
SELECT *
FROM B left outer join C on C.a=A.b,A
WHERE A.c=B.d

Но, позвольте, разве от изменения порядка следования перечисляемых что-то меняется? Так скажем, должно ли меняться? Сдается мне, что по стандарту SQL такого быть не должно.
...
Рейтинг: 0 / 0
ASA 8 -> ASA 9
    #36462297
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iLLer wrote:

> Я кажется понял на что Вы намекаете. Т.е., следуя Вашим утверждениям,
> следующий запрос уже имеет ошибку синтаксиса, т.к. A упоминается не
> перед, а после C?!
>
> SELECT *
> FROM B left outer join C on C.a=A.b,A
> WHERE A.c=B.d

Я не знаю, можно ли в конкретно этой СУБД так писать.
Давайте предположим, что можно. Тогда никакой ошибки тут не будет.


> Но, позвольте, разве от изменения порядка следования перечисляемых
> что-то меняется?

Нет.

Так скажем, должно ли меняться?
нет.

Сдается мне, что по
> стандарту SQL такого быть не должно.

Чего ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
16 сообщений из 41, страница 2 из 2
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASA 8 -> ASA 9
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]