2013-03-18 2 views
1

Как можно создать запрос SELECT, который будет выводить multiplication table , не используя ничего подобного соединению или подзапросам? Можно использовать некоторые новые поддерживающие таблицы.таблица умножения sql

UPD:

select 
x " ", 
x*x1 "1", x*x2 "2", x*x3 "3", x*x4 "4", x*x5 "5", x*x6 "6", x*x7 "7", x*x8 "8", x*x9 "9",  x*x10 "10" 
from num, res 
where rownum < 11; 
+0

Я создал 2 таблицы: с 1 столбцом и 10 строками, а другой с 10 столбцами и 1 значением строки. Затем сделал выбор с их умножением и ограничил его rownum <10. Это работало нормально. – phd

+0

вы делаете соединение там, мой ответ - решение вашей проблемы. – Sebas

ответ

0

Вставьте значения в одну таблицу, выберите из таблицы дважды, не обеспечивает соединение между двумя таблицами, и вуаля декартово произведение.

+2

Декартово произведение, другими словами, называется крестовым соединением. –

1
SELECT 
    level AS C, 
    1*level AS R1, 
    2*level AS R2, 
    3*level AS R3, 
    4*level AS R4, 
    5*level AS R5, 
    6*level AS R6, 
    7*level AS R7, 
    8*level AS R8, 
    9*level AS R9, 
    10*level AS R10 
FROM dual CONNECT BY level < 11 

См.? Здесь есть только один запрос. И не нужно заполнять тупой фиктивный стол.

+0

Я предполагаю, что это подзапрос :) – phd

+1

нет, что нет, технически. – Sebas

+0

Я собираюсь отредактировать его для вас, чтобы понять – Sebas

0
select level*&n from dual connect by level<=10; 

Здесь вы можете указать любой номер, для которого вы хотите использовать таблицу взаиморасчетов.

Смежные вопросы