Если у Вас есть "сетка", которую Вы хотите заполнить полностью, как размер и информация о цвете для конкретного предмета одежды:
select
size,
color
from
sizes CROSS JOIN colors
, Возможно, Вы хотите таблицу, которая содержит строку в течение каждой минуты в день, и Вы хотите использовать ее, чтобы проверить, что процедура выполнялась каждую минуту, таким образом, Вы могли бы пересечь три таблицы:
select
hour,
minute
from
hours CROSS JOIN minutes
Или у Вас есть ряд спецификаций стандартного отчета, к которым Вы хотите обратиться каждый месяц в году:
select
specId,
month
from
reports CROSS JOIN months
проблема с поддержанием это как представления то, что в большинстве случаев, Вы не хотите готовый продукт, особенно относительно одежды. Можно добавить MINUS
логика к запросу для удаления определенных комбинаций, которые Вы не несете, но Вы могли бы найти легче заполнить таблицу некоторый другой путь и не использовать Декартово произведение.
кроме того, Вы могли бы закончить тем, что пробовали перекрестное объединение на таблицах, которые имеют, возможно, еще несколько строк, чем Вы думали, или возможно Ваш WHERE
, пункт был частично или абсолютно недостающий. В этом случае Ваш DBA уведомит Вас быстро пропуска. Обычно он не будет счастлив.
Вы обычно не собираетесь хотеть полное Декартово произведение для большинства запросов базы данных. Целое питание реляционных баз данных состоит в том, что можно ввести любые ограничения, которыми Вы могли бы интересоваться позволить Вам стараться не вытягивать ненужные строки от дб.
я предполагаю, что тот изобрел пример, где Вы могли бы хотеть, который является, если у Вас есть таблица сотрудников и таблица заданий, которые нужны в выполнении и хотят видеть все возможные присвоения одного сотрудника к одному заданию.
Генерируйте данные для тестирования.
Ключ, "показывают мне все возможные комбинации". Я использовал, они в сочетании с другими вычисляемыми полями тогда сортировали/фильтровали тех.
, Например, скажите создание арбитража (торговое) приложение. У Вас есть продавцы, предлагающие продукты по цене и покупателям, просящим продукты по стоимости. Вы делаете перекрестное объединение на ключе продукта (для подхождения потенциальных покупателей и продавцов), вычисляете распространение между стоимостью и ценой, затем вид desc. на этом, чтобы дать Вам (посредник) самые прибыльные отрасли для выполнения. Почти всегда у Вас будут другие критерии фильтра ограничения, конечно.
Хорошо, это, вероятно, не ответит на вопрос, но, если это будет верно (и я даже не уверен в этом), это - забавный бит истории.
В первые годы Oracle, один из разработчиков понял, что должен был копировать каждую строку в таблице (например, возможно, что это была таблица событий, и он должен был изменить его отдельный, "запускают событие" и "записи" события конца). Он понял, что, если у него была таблица со всего двумя строками, он мог бы сделать перекрестное объединение, выбрав просто столбцы в первой таблице, и точно иметься, ему было нужно. Таким образом, он составил простую таблицу, которую он достаточно естественно назвал "ДВОЙНЫМ".
Позже, он должен сделать что-то, что могло только быть сделано через выбор из таблицы, даже при том, что само действие не имело никакого отношения к таблице, (возможно, он забыл свои часы и хотел считать время через ИЗБРАННЫЙ SYSDATE ОТ...), Он понял, что все еще имел свою таблицу DUAL, лежащую вокруг, и использовал это. Через некоторое время, он усталый от наблюдения времени, распечатанного дважды, таким образом, он возможная удаленная из строк.
Другие в Oracle начали использовать его таблицу, и в конечном счете, было решено включать его в стандартную установку Oracle.
, Который объясняет, почему таблица, чья только значение состоит в том, что она ссорится, имеет имя, что означает "два".
Берет что-то как таблица цифр, которая имеет десять строк для цифр 0-9. Можно использовать перекрестное объединение на той таблице несколько раз к получить результату, который имеет однако много строк, в которых Вы нуждаетесь с результатами, пронумерованными соответственно. Это имеет много использования. Например, можно объединиться, это с datadd () функционирует для получения набора в течение каждого дня в данном году.
Это - интересный способ использовать перекрестное объединение для , создают отчет с перекрестными ссылками . Я нашел его в SQL Joe Celko Для Присяжных острословов и несколько раз использовал его. Это действительно берет немного установки, но стоило времени, которое инвестируют.
Предположите, что у Вас была серия запросов, которые Вы хотите выпустить по определенной комбинации объектов и дат (цены, доступность, и т.д.). Вы могли загрузить объекты и даты в отдельные временные таблицы и иметь Ваше перекрестное объединение запросов таблицы. Это может быть более удобно, чем альтернатива для перечисления объектов и дат в В пунктах, тем более, что некоторые базы данных ограничивают число элементов в В пункте.