|
|
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhiniLLer, экранировать или нет - это как раз зависит от обработки на клиенте, и смысл будет разные или отсутсвие записей или нулевые обороты. Ну тогда не экранируйте. Обновите клиента и будет счастье. P.S. left outer join делается не ко всем перечисленным до него таблицам через запятую, а к одной сущности. В качестве такой сущности может идти соединение других таблиц. Запятая не является соединением. Поэтому конструкция Код: plaintext 1. Если и читать, то только ANSI SQL, ASA тут ни причем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2010, 22:42 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhinСинтаксически запрос был правильный Нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2010, 22:50 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
iLLerПоэтому конструкция Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2010, 00:40 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
White OwlВообще-то, эта конструкция вполне даже работающая. Она не чиста с точки зрения стандартов, но все сервера где я ее пробовал (включая ASE 7-11) прекрасно ее отрабатывают. Хм. Если спичка лезет в замочную скважину, это еще не значит, что это ключ. Если оптимизатор пропускает такую конструкцию, значит он ОДНОЗНАЧНО считает, что сначала перемножит две таблицы A и B, и только после этого приступает к рассмотрению возможностей подсоединения третьей, C. Не очень умный оптимизатор, так скажем. Откуда ему заранее известно, что так будет проще, а не сначала соединить B и C, и только потом перемножить с A?! Ему это не может быть известно, а значит множество потенциальных планов изначально искусственно ограничено, и внедрен именно такой подход к разбору синтаксиса. "Работающая" еще не значит корректная. Примерно тоже самое, что написать в where условие "0/0=0/0", вроде ничего не меняет, однако некорректно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2010, 22:17 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
iLLerWhite OwlВообще-то, эта конструкция вполне даже работающая. Она не чиста с точки зрения стандартов, но все сервера где я ее пробовал (включая ASE 7-11) прекрасно ее отрабатывают. Хм. Если спичка лезет в замочную скважину, это еще не значит, что это ключ. Если оптимизатор пропускает такую конструкцию, значит он ОДНОЗНАЧНО считает, что сначала перемножит две таблицы A и B, и только после этого приступает к рассмотрению возможностей подсоединения третьей, C.Вообще-то, он сначала сделает B&C, а потом добавит A. iLLer"Работающая" еще не значит корректная.А с этим я не спорю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2010, 23:18 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
White OwlВообще-то, он сначала сделает B&C, а потом добавит A. Я наверно "не въехал". А как он сможет???? Если для соединения B и C ему нужно посчитать условие "C.a=A.b", а в нем упоминается еще не проявленная A... Возможно оптимизаторы пропускающее такое и не такие простые. Видимо есть какое-то объяснение для существования такой конструкции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 00:24 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
iLLerWhite OwlВообще-то, он сначала сделает B&C, а потом добавит A. Я наверно "не въехал". А как он сможет???? Если для соединения B и C ему нужно посчитать условие "C.a=A.b", а в нем упоминается еще не проявленная A... Возможно оптимизаторы пропускающее такое и не такие простые. Видимо есть какое-то объяснение для существования такой конструкции.эээ.... прошу прощения, я не внимательно посмотрел на селект что с чем связывается. В общем то да, без приведения этого к единому знаменателю, в смысле без перевода связей в тот или другой синтаксис эту фигню не разобрать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 00:52 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
iLLer wrote: > Хм. Если спичка лезет в замочную скважину, это еще не значит, что это ключ. > Если оптимизатор пропускает такую конструкцию, значит он ОДНОЗНАЧНО > считает, что сначала перемножит две таблицы A и B, и только после этого > приступает к рассмотрению возможностей подсоединения третьей, C. Форма записи SQL-запроса никак не связана со способом его обработки. Ну и стало быть все остальные "выводы" также неоправданы. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 09:40 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Наверно Вы хотели сказать, что форма записи не должна определять способ выполнения. Конечно, в теории это так и есть. Я говорил лишь про сервера, которые глотают такую фигню. И факт этого глотания говорит лишь об одном, что некорректность соединения B и C сервер может не заметить только в одном случае, когда он априори и не пытается проанализировать эту возможность. В противном случае он бы возвращал ошибку. А раз не возвращает, значит подход к анализу усеченный. Я правильно Вас понимаю, что Вы допускаете возможность существования некоего гипотетического сервера, который бы с одной стороны молча принимал такую конструкцию, а с другой, при построении плана выполнения заценивал все возможные стоимости включая подход сначала B и C, а потом перемножение с A?! И, очевидно, натыкаясь на ошибку тупо отбрасывал этот план с неудавшейся стоимостью, а оставлял тот, который позволил бы выполнить запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 15:08 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 15:21 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Может Вы тоже не заметили "прикола"? Хорошо. Гипотетический сервер существует. Представим, что мы это он. Попытаемся заценить стоимость обработки запроса в случае, когда мы сначала хотим пересечь B и C, и только потом A. Чтобы посчитать общую стоимость, нужно посчитать стоимость частей. Какова будет стоимость "B left outer join C on C.a=A.b"? Вы можете прикинуть, при условии, что Вы вообще не знаете что такое A.b, т.к. отложили A на потом! Оценка невозможна, т.к. на соединение B и C нельзя наложить условие "C.a=A.b". Вот и ошибка синтаксиса. Поэтому, либо слепой оптимизатор, либо ошибка синтаксиса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 16:26 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 17:03 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
iLLerЯ правильно Вас понимаю, что Вы допускаете возможность существования некоего гипотетического сервера, который бы с одной стороны молча принимал такую конструкцию, а с другой, при построении плана выполнения заценивал все возможные стоимости включая подход сначала B и C, а потом перемножение с A?! И, очевидно, натыкаясь на ошибку тупо отбрасывал этот план с неудавшейся стоимостью, а оставлял тот, который позволил бы выполнить запрос? Погоди, о каком гипотетическом серевере ты говоришь? У нас в рассмотрении совершенно не гипотетический, а вполне реальный ASA9. В котором оптимизатор ВСЕГДА переводит любые связи между таблицами в JOIN синтакс прежде чем начинает строить планы. Это было одной из рекламных завлекаловок когда девятка выходила. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 19:55 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
White OwliLLerЯ правильно Вас понимаю, что Вы допускаете возможность существования некоего гипотетического сервера, который бы с одной стороны молча принимал такую конструкцию, а с другой, при построении плана выполнения заценивал все возможные стоимости включая подход сначала B и C, а потом перемножение с A?! И, очевидно, натыкаясь на ошибку тупо отбрасывал этот план с неудавшейся стоимостью, а оставлял тот, который позволил бы выполнить запрос? Погоди, о каком гипотетическом серевере ты говоришь? У нас в рассмотрении совершенно не гипотетический, а вполне реальный ASA9. В котором оптимизатор ВСЕГДА переводит любые связи между таблицами в JOIN синтакс прежде чем начинает строить планы. Это было одной из рекламных завлекаловок когда девятка выходила. Вот поэтому, 9-ка и выдает оишбку в отличии от 8-ки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 22:26 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
MasterZiv Здесь нет никакой ошибки синтаксиса. По семантике операции left outer join A должно быть перед С. А вот при чём тут B, или как его JOIN записан -- не понятно. Я кажется понял на что Вы намекаете. Т.е., следуя Вашим утверждениям, следующий запрос уже имеет ошибку синтаксиса, т.к. A упоминается не перед, а после C?! Код: plaintext 1. 2. Но, позвольте, разве от изменения порядка следования перечисляемых что-то меняется? Так скажем, должно ли меняться? Сдается мне, что по стандарту SQL такого быть не должно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2010, 10:00 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2010, 10:19 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=36461225&tid=2010745]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
148ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 256ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...