2015-03-26 3 views
2

вопрос звучит странно, но только посмотрите:Как объединить 2 столбца со всеми возможными комбинациями в SQL?

Таким образом, мы можем получить первый столбец (col1):

select distinct maker 
from product 

И вторая колонка (col2):

select distinct type,maker 
from product 

Так что теперь мне нужно получить все возможные комбинации из col1 и col2. Любое предложение?

Вскоре это:

A f1 

B f2 

должны стать это:

A f1 

A f2 

B f1 

B f2 

P.S. Этот запрос не вернется, что мне нужно.

select distinct A.maker, B.type 
from product as A 

ответ

5

Использование cross join получить все комбинации:

select m.maker, t.type 
from (select distinct maker from product) m cross join 
    (select distinct type from product) t; 

Это ANSI SQL синтаксис и должны поддерживаться в любой базе данных.

1

вариант с использованием cross join, но без подзапросов даст тот же результат, как и в @Gordon Linoff пост, так что вы получите все возможные комбинации

select distinct A.maker, B.type 
from product as A cross join product as B 
Смежные вопросы