Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Стиль ANSI SQL-92 в версии 6.5 по меньшей мере - неадекватен...
|
|||
|---|---|---|---|
|
#18+
Обнаружен 1 странный "глюк" в версии 6.5... (правда, может я сам не знаю каких-то особо "хитрых" установок SET OPTIONS, вобщем - судите сами...) Для начала - цитата из BOL для версии 6.5: New join operators are available in SQL Server 6.5. Because future versions of SQL Server may discontinue support for the "*=" and "=*" outer join operators, it is recommended that you use the ANSI-standard join clauses (LEFT OUTER JOIN, RIGHT OUTER JOIN, and FULL OUTER JOIN) instead. Далее - берем сервер 6.5+SP5 (@@version=6.50.416) и даем ему на исполнение такой скрипт: IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE type = 'u' AND name like '#join_source%' ) DROP TABLE #join_source GO IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE type = 'u' AND name like '#join_reference%' ) DROP TABLE #join_reference GO SET NOCOUNT ON SET ANSI_DEFAULTS ON CREATE TABLE #join_source (parent_db char(5), parent_id int, descr varchar(15)) CREATE TABLE #join_reference (child_db char(5), child_id int, descr varchar(15)) INSERT INTO #join_source SELECT 'MAIN1',1,'Андрей' INSERT INTO #join_source SELECT 'MAIN1',2,'Анатолий' INSERT INTO #join_source SELECT 'MAIN1',3,'Владимир' INSERT INTO #join_source SELECT 'MAIN1',4,'Олег' INSERT INTO #join_reference SELECT 'MAIN1',1,'Ларин' INSERT INTO #join_reference SELECT 'MAIN1',2,'Дукалис' INSERT INTO #join_reference SELECT 'FALL2',3,'Казанцев' INSERT INTO #join_reference SELECT 'MAIN1',4,'Половцев' SELECT 'Без фильтров по связанной таблице' SELECT 'Style:'=ISNULL(r.child_db,'QU-QU'),'*='=s.descr,''=r.descr FROM #join_source s, #join_reference r WHERE s.parent_db*=r.child_db AND s.parent_id*=r.child_id -- join conditions SELECT 'Style:'=ISNULL(r.child_db,'QU-QU'),'LEFT OUTER'=s.descr,'JOIN'=r.descr FROM #join_source s LEFT OUTER JOIN #join_reference r ON s.parent_db=r.child_db AND s.parent_id=r.child_id -- join conditions SELECT 'С "мягким" фильтром по связанной таблице' +CHAR(13)+CHAR(10)+'(все записи связанной таблицы попадают в выборку)' SELECT 'Style:'=ISNULL(r.child_db,'QU-QU'),'*='=s.descr,''=r.descr FROM #join_source s, #join_reference r WHERE s.parent_db*=r.child_db AND s.parent_id*=r.child_id -- join conditions AND r.child_id <=4 -- filter conditions SELECT 'Style:'=ISNULL(r.child_db,'QU-QU'),'LEFT OUTER'=s.descr,'JOIN'=r.descr FROM #join_source s LEFT OUTER JOIN #join_reference r ON s.parent_db=r.child_db AND s.parent_id=r.child_id -- join conditions WHERE r.child_id <=4 -- filter conditions SELECT 'С "жестким" фильтром по связанной таблице' +CHAR(13)+CHAR(10)+'(одна запись связанной таблицы не попадает в выборку)' SELECT 'Style:'=ISNULL(r.child_db,'QU-QU'),'*='=s.descr,''=r.descr FROM #join_source s, #join_reference r WHERE s.parent_db*=r.child_db AND s.parent_id*=r.child_id -- join conditions AND r.child_id <=3 -- filter conditions SELECT 'Style:'=ISNULL(r.child_db,'QU-QU'),'LEFT OUTER'=s.descr,'JOIN'=r.descr FROM #join_source s LEFT OUTER JOIN #join_reference r ON s.parent_db=r.child_db AND s.parent_id=r.child_id -- join conditions WHERE r.child_id <=3 -- filter conditions А вот и результаты выполнения: --------------------------------- Без фильтров по связанной таблице Style: *= ------ --------------- --------------- MAIN1 Андрей Ларин MAIN1 Анатолий Дукалис QU-QU Владимир NULL MAIN1 Олег Половцев Style: LEFT OUTER JOIN ------ --------------- --------------- MAIN1 Андрей Ларин MAIN1 Анатолий Дукалис QU-QU Владимир NULL MAIN1 Олег Половцев -------------------------------------------------------------------------------------------- С "мягким" фильтром по связанной таблице (все записи связанной таблицы попадают в выборку) Style: *= ------ --------------- --------------- MAIN1 Андрей Ларин MAIN1 Анатолий Дукалис QU-QU Владимир NULL MAIN1 Олег Половцев Style: LEFT OUTER JOIN ------ --------------- --------------- MAIN1 Андрей Ларин MAIN1 Анатолий Дукалис MAIN1 Олег Половцев ------------------------------------------------------------------------------------------------- С "жестким" фильтром по связанной таблице (одна запись связанной таблицы не попадает в выборку) Style: *= ------ --------------- --------------- MAIN1 Андрей Ларин MAIN1 Анатолий Дукалис QU-QU Владимир NULL QU-QU Олег NULL Style: LEFT OUTER JOIN ------ --------------- --------------- MAIN1 Андрей Ларин MAIN1 Анатолий Дукалис И что бы это значило? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2001, 07:13 |
|
||
|
Стиль ANSI SQL-92 в версии 6.5 по меньшей мере - неадекватен...
|
|||
|---|---|---|---|
|
#18+
Про это уже писали в форуме Перенос условия из LEFT OUTER JOIN в WHERE превращает LEFT OUTER JOIN в INNER JOIN Т.е. SELECT 'Style:'=ISNULL(r.child_db,'QU-QU'),'LEFT OUTER'=s.descr,'JOIN'=r.descr FROM #join_source s LEFT OUTER JOIN #join_reference r ON s.parent_db=r.child_db AND s.parent_id=r.child_id -- join conditions WHERE r.child_id <=3 -- filter conditions превращается в SELECT 'Style:'=ISNULL(r.child_db,'QU-QU'),'LEFT OUTER'=s.descr,'JOIN'=r.descr FROM #join_source s INNER JOIN #join_reference r ON s.parent_db=r.child_db AND s.parent_id=r.child_id -- join conditions WHERE r.child_id <=3 -- filter conditions ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2001, 08:07 |
|
||
|
Стиль ANSI SQL-92 в версии 6.5 по меньшей мере - неадекватен...
|
|||
|---|---|---|---|
|
#18+
Помнится, эта ситуация меня чуть не доконала, когда я создавал процедуру работы с прайс-листами. Как только начинаешь использовать Where так сразу приоритет Left join уходит на второе место и получаешь Inner join. В общем, я перенес условие из Where в Left join и все заработало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2001, 08:51 |
|
||
|
Стиль ANSI SQL-92 в версии 6.5 по меньшей мере - неадекватен...
|
|||
|---|---|---|---|
|
#18+
2 AlexUnik Спасибо, очень хрошее объяснение... 2 alexeyvg Я частенько вижу в этом форуме ответы с упоминанием о том, что все "это" уже обсуждалось... А как бы еще научиться находить среди горы "обсуждений" именно то, что интересует тебя в данный момент? Судя по частоте таких ответов - народу проще создать свежую "ветку" за 5-10 мин., чем рыться 0.5 часа (если повезет) в поисках нужного ответа. Есть ли выход из такой ситуации? 2 Moderator Например, мне было бы гораздо удобнее, чтобы на этом форуме появился раздел, ну скажем - "Фичи", куда тот же уважаемый модератор периодически скидывал бы все топики, в которых обсуждались вещи "неочевидные", "нетривиальные", "оригинальные" и т.д. Решение об отборе пусть оставляет за собой, или "делегирует" особо доверенным лицам... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2001, 10:58 |
|
||
|
Стиль ANSI SQL-92 в версии 6.5 по меньшей мере - неадекватен...
|
|||
|---|---|---|---|
|
#18+
2 qu-qu Научиться находить среди горы "обсуждений" именно то, что интересует тебя в данный момент очень просто - для этого есть поиск ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2001, 13:11 |
|
||
|
Стиль ANSI SQL-92 в версии 6.5 по меньшей мере - неадекватен...
|
|||
|---|---|---|---|
|
#18+
2 alexeyvg "Поиск" ... "хрено-иск"... Зайди, пжлст, на этот поиск, не поленись... Набери в поле для ввода всего 2 слова - "OUTER" и "JOIN"... Нажми кнопку и посмотри - что тебе покажется в качестве результатов... Из 40-ка найденных статей 80% озаглавлены как "Reply to topic" - т.е. в каждую из них надо залезать и просматривать - "а о чем же оно написано?"... А к слову сказать - вот этой конкретной ветки в этих результатах поиска и нету, хотя тут слова "OUTER" и "JOIN" в каждом посте. О-ч-ч-ч-чень удобный поиск, ничего не скажешь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2001, 15:01 |
|
||
|
Стиль ANSI SQL-92 в версии 6.5 по меньшей мере - неадекватен...
|
|||
|---|---|---|---|
|
#18+
qu-qu < Этой ветки нет в результатах поиска, т.к. индексирование мы можем себе позвольть только раз в неделю. Над предложением по поводу коллекции разных Фич нужно подумать: напрашивается создание FAQ и библиотеки скриптов. Что же касается облегчения навигации по форуму и поиска, тут поможет только его полная переделка. Этот форум не расчитан на такой объём новых топиков и такое количество ответов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2001, 08:59 |
|
||
|
Стиль ANSI SQL-92 в версии 6.5 по меньшей мере - неадекватен...
|
|||
|---|---|---|---|
|
#18+
2 Александр Гладченко Александр, спасибо Вам за то, что обратили внимание на мое предложение по поводу "коллекции фич", или FAQ-а. Раз уж я обращаюсь к Вам лично, позвольте выразить Вам свою признательность и восхищение за создание и поддержание в "лучшем виде" такого замечательного и полезного ресурса в Ру-нете. К сожалению, я ничерта не знаю про возможности настройки UltraBoard v1.6, чтобы советовать что-то конкретное, но согласитесь - вариант "полной" информации, которую выдает скрипт поиска выдает максимум "слов" при минимуме "информации", (вот 1 из примеров т.н. "полного" формата вывода): 1. Использование СУБД, программирование, работа, и т.д. - Reply to Topic [1859387466] ОТВЕТИТЬ В ТЕМУ Имя Куда Использование СУБД / Microsoft SQL Server / поиск по множеству таблиц Тема Сообщение вы можете использовать ultraboard коды для дополнительного форматирования. (подробнее смотрите помощь) Powered by UltraBoard v1.6... ОТВЕТИТЬ В ТЕМУ Имя Куда Использование СУБД / Microsoft SQL Server / поиск по множеству таблиц Тема Сообщение вы можете использовать ultraboard коды для дополнительного форматирования. (подробнее смотрите помощь) Powered by UltraBoard v1.6... http://www.sql.ru/cgi-bin/UltraBoard/UltraBoard.pl?Action=NewReply&Post=926&Board=mssql&Idle=&Sort=&Order=&Page=&Session= (text/html; charset=windows-1251) Tue, 29 May 2001 20:30:16 MSD, 34818 bytes В эдакой куче текста - НИ ОДНОГО упоминания не только о том - "а что же искалось-то?", но даже - "о чем идет речь в топике", который предложен в качестве "ответа" на запрос поиска... Зато почти вся эта "тряхомудь" (извините за резкость) - аккуратно продублирована, наверное, для большей "полноты" формата. Сдается мне, что все-таки существующую версию UltraBoard можно-таки "подкрутить", чтобы результаты поиска выглядели немного "информативнее" (уж, по крайней мере, вместо 121-символьного "технического" URL-а статьи можно показать первые 121 символа из ее текста). Поймите меня правильно, и примите это, пжлст, за "конструктивную критику"... ничего личного... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2001, 14:08 |
|
||
|
Стиль ANSI SQL-92 в версии 6.5 по меньшей мере - неадекватен...
|
|||
|---|---|---|---|
|
#18+
2 qu-qu. Наверное выпользовались поиском по сайту, а есть еще поиск по форуму для этого нужно нажать на кнопочку с лупой и бумажкой. Успехов. Regards, Alexander Sibilev (admin@sql.ru) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2001, 14:23 |
|
||
|
Стиль ANSI SQL-92 в версии 6.5 по меньшей мере - неадекватен...
|
|||
|---|---|---|---|
|
#18+
qu-qu < Спасибо за тёплые слова, которые относятся также к автору сайта Александру Сибилёву. Конструктивной критике мы только рады, так что сасибо Вам и за это. Будем стараться сделать сайт более удобным. Есдинственное, что не могу обещать, что улучшения и новшества появятся быстро. Проект SQL.RU пока для нас с Александргм только хобби, а времени всегда не хватает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2001, 15:02 |
|
||
|
|

start [/forum/topic.php?fid=46&tid=1826043]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 357ms |

| 0 / 0 |
