2013-01-07 2 views
0

내가 5 colours-순열과 조합

내가 좋아하는 모든 조합을 얻으려면
colour 
------- 
red 
black 
white 
green 
orange 

의 한 열 개로 구성된이있는 테이블이

(빨강, 오렌지) (검정, 흰색) . . . 등등. 동일한 ones.i를 제외하고 나는 그 자체로 테이블에 합류하려고 노력했다.

select * 
from table1 cross join table1 

하지만 내가 원하는 answer.it을하지 않았다 내가 또 다른 테이블을 만들지 않고이 작업을 수행하는 다른 방법이 ??? 얻을 수있는 모든 combinations.also 동일한 ones.how을 반환 ???

SELECT a.color, b.color 
FROM colors a 
CROSS JOIN colors b 
WHERE a.color != b.color 

동일하여 추가로 단 하나의 보존을 의미하는 경우 (흰색, 검은 색) 또는 (검은 색, 흰색 : 동일한에 의해 당신은 (흰색, 흰색)과 같은 쌍을 의미하는 경우

답변

5

아마도 이것은 당신이 원하는 것입니다) 아마도 이것은 원하는 것입니다 :

SELECT a.color, b.color 
FROM colors a 
CROSS JOIN colors b 
WHERE a.color > b.color 

중요한 부분은 교차 결합을 수행 한 후에 원하지 않는 요소를 거부하는 것입니다.

여기에 은 새로운 테이블을 만들거나 기존 테이블을 수정하지 않습니다.. ab은 동일한 테이블에 대해 단지 두 개의 별명입니다. colors. 테이블에는 하나의 열 color 만 있지만 테이블이 SELECT에 두 번 표시되므로 colors 테이블의 두 인스턴스 (개념적이 아닌 사실!)를 구별해야합니다.

당신은join (당신은 너무 적은 행이 줄)없이 할 수 없으며 쉽게 (일부 행을 거부하는 두 열을 참조 할 필요) 별칭없이 할 수도 이유가있다 별칭을 할당합니다.

+0

내가 다른 colomn 또는 다른 테이블 ???? 어떤 방법이 사용하려는 해달라고 경우 ???? @jan dvorak –

+0

@shishir_bindu 두 테이블을 사용하고 있지 않습니다. 이것은 동일한 테이블을 두 번 사용합니다 ('a'와'b'는 별칭 일뿐입니다). 테이블 자체에 가입하지 않고는 할 수 없습니다. –

+0

감사합니다. :) 나는 제 1 장소에서 별칭 개념을 얻지 못했습니다.하지만 지금 받으 셨습니다. 다시 한 번 감사드립니다. –

1

조합 :

SELECT a.color,b.color 
FROM colors a 
JOIN colors b 
ON a.color < b.color 

순열 :

SELECT a.color,b.color 
    FROM colors a 
    JOIN colors b 
    ON a.color != b.color