Обсуждение:Join (SQL)
Проект «Информационные технологии» (уровень II, важность для проекта низкая)
Эта статья тематически связана с вики-проектом «Информационные технологии», цель которого — создание и улучшение статей по темам, связанным с информационными технологиями. Вы можете её отредактировать, а также присоединиться к проекту, принять участие в его обсуждении и поработать над требуемыми статьями. |
Эта статья была предложена к переименованию 4 октября 2010 года. В результате обсуждения было решено оставить название Join (SQL) без изменений. Для повторного выставления статьи на переименование нужны веские основания, иначе это может быть расценено как игра с правилами (см. пункт 8). |
Предложение
правитьПредлагаю добавить в статью аналогичные диаграммы: http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html
- Полагаю, что достаточно ссылки. Визуализация - это конечно хорошо, но, как это и объяснено в указанном блоге, необходимы специальные предосторожности и определённая интерпретация диаграмм. Поэтому для мнемоники это не совсем подходит: эти мелкие детали могут забыться. РоманСузи 16:09, 14 сентября 2012 (UTC)
Обязательность конструкции
правитьПоскольку SELECT с JOIN всегда можно заменить на SELECT с WHERE, в некоторых БД этот оператор не реализован, не правда ли? Ignatus 07:35, 7 сентября 2011 (UTC)
- В некоторых СУБД (а не БД) оператор JOIN и правда не реализован, но вовсе не поэтому. Любая алгебра избыточна, например, в арифметике можно выразить вычитание через умножение и сложение, деление — через умножение и обращение и т.д. Однако это не значит, что одни операции более базисные, чем другие, можно выделить множество вариантов базисов. В нашем случае, да, соединение можно выразить через произведение и выборку, однако верно и другое: произведение можно выразить через соединение, и выборку можно выразить через соединение. Евгений Мирошниченко 08:30, 7 сентября 2011 (UTC)
Дополнение
правитьНе рассмотрены варианты полей со значениями NULL для операций OUTER JOIN и CROSS JOIN 86.62.100.65 04:42, 20 июля 2012 (UTC)steiiar@mail.ru
Добавьте плз картинку, автор даёт согласие Картинка http://i28.fastpic.ru/big/2011/1213/20/f535d26e0d6fd2e4bdcee5992f2f2020.jpg Согласие автора: http://forum.vingrad.ru/index.php?showtopic=343660&view=findpost&p=2517987 77.181.59.179 16:00, 14 сентября 2012 (UTC)
- Эта картинка неясно что показывает. По ней создаётся иллюзия, что речь идёт о пересечениях множеств, как в диаграммах Эйлера-Венна. Кажется, будто количество элементов при соединении меньше либо равно сумме количеств элементов соединяемых отношений. Эти рисунки сами надо тщательно объяснять и интерпретировать. Тогда к чему они нужны, если они лишь привносят дополнительную сложность? Уж лучше более тщательно объяснить на примерах саму операцию соединения. ◄ Евгений Мирошниченко ► 03:05, 15 сентября 2012 (UTC)
Мне оно очень помогло, я не мог понять как именно работают эти механизмы, а тут наглядно показано, правда, конечно кидать картинку одним целым не целесообразно, а вот порезать на части, чтоб к каждому свою прикрепить, очень даже в тему 2A02:908:F018:1700:225:90FF:FE4B:81BC 10:55, 15 ноября 2012 (UTC)
О размачивании сухого
правитьПреамбула слишком "суха". Всё-таки статья об SQL, а не о реляционной алгебре. Если не нравится моё добавление, напишите, пожалуйста своё или объясните, в чём именно безграмотность, кроме, возможно, не очень удачного термина «отношение» в этом контексте. Спасибо. РоманСузи 07:47, 19 сентября 2012 (UTC)
- Поскольку это цитата, то моё "безграмотность" относится не к вам, разумеется, а к источнику. Хотя в источнике написано relationship, что, строго говоря, в контексте баз данных нельзя переводить как "отношение", а только как "связь" или "взаимосвязь". Но как бы то ни было, связей между строками может и не быть. Например, перекрёстное соединение заведомо не предполагает никаких "связей". Поэтому фраза из источника неверна.
- Поскольку я не понимаю ни фразы «Преамбула слишком "суха"», ни её связи с фразой «Всё-таки статья об SQL, а не о реляционной алгебре», то прокомментировать эту часть я не в состоянии. ◄ Евгений Мирошниченко ► 09:42, 19 сентября 2012 (UTC)
- Хорошо. Я попробую найти источник получше. О сухости: описание Join (SQL), на мой взгляд, не должно только отсылать куда-то, где содержатся существенные сведения. Поэтому я предлагаю дополнить определение в терминах самого SQL, тех самых таблиц, связей между ними, ключей и т.п. Без этого определение выглядит слишком теоретическим, оторванным от контекста. РоманСузи 10:27, 19 сентября 2012 (UTC)
- Я не против, разумеется. Надо над формулировкой поработать. Полагаю, вы, как писатель, самостоятельно гораздо лучше придумаете вариант, чем эти переводные фразы с иноземных серверов. ◄ Евгений Мирошниченко ► 11:16, 19 сентября 2012 (UTC)
- Вот это, гл. 3, стр. 90 по вашему — стоящий источник (нужная глава есть в PDF), или опять к консенсусу не придём? РоманСузи 20:11, 19 сентября 2012 (UTC)
- Кстати, сейчас заметил, в удалённом тексте вроде не об отношениях между строками речь, а о столбцах. РоманСузи 20:16, 19 сентября 2012 (UTC)
- Знаю эту книгу. К сожалению, фраза из неё «Соединения полностью предназначены для обеспечения выборки данных из нескольких таблиц и включения этих данных в один результирующий набор» плоха тем, что не отличает соединение от объединения, для которого эта фраза тоже отлично подходит. Попробую что-то написать на основе этой фразы. ◄ Евгений Мирошниченко ► 01:51, 20 сентября 2012 (UTC)
- По-моему, получилось хорошо. РоманСузи 03:37, 20 сентября 2012 (UTC)
- Знаю эту книгу. К сожалению, фраза из неё «Соединения полностью предназначены для обеспечения выборки данных из нескольких таблиц и включения этих данных в один результирующий набор» плоха тем, что не отличает соединение от объединения, для которого эта фраза тоже отлично подходит. Попробую что-то написать на основе этой фразы. ◄ Евгений Мирошниченко ► 01:51, 20 сентября 2012 (UTC)
- Я не против, разумеется. Надо над формулировкой поработать. Полагаю, вы, как писатель, самостоятельно гораздо лучше придумаете вариант, чем эти переводные фразы с иноземных серверов. ◄ Евгений Мирошниченко ► 11:16, 19 сентября 2012 (UTC)
- Хорошо. Я попробую найти источник получше. О сухости: описание Join (SQL), на мой взгляд, не должно только отсылать куда-то, где содержатся существенные сведения. Поэтому я предлагаю дополнить определение в терминах самого SQL, тех самых таблиц, связей между ними, ключей и т.п. Без этого определение выглядит слишком теоретическим, оторванным от контекста. РоманСузи 10:27, 19 сентября 2012 (UTC)