2012-06-28 6 views
-4

를 사용하지 않고 나는 두 테이블의 결합을 먹고 싶어. 그들은 둘 다 열의 수가 같지 않으며 그 중 일부는 공통이고 일부는 그렇지 않습니다.SQL의 UNION 개별 열 이름

어떻게 개별 열 이름 (사이에 더미 열을 삽입)을 사용하지 않고 노동 조합을 걸릴 것이다.

나는 쿼리하고 테이블의 커플의 결합을해야하고 같은 테이블의 다른 열 이름을했을 다른 데이터베이스에 테스트 될 것이다. 따라서 개별 열 이름을 처리하고 더미 열을 삽입하여 공용체를 가져 오는 일반적인 방법을 사용할 수 없습니다.

감사합니다, gokul.

+0

당신은 열을 표시해야합니다. 다른 서버에있는 데이터베이스의 이름이 다를 수 있습니까? 그것은 당신이 쿼리 문제가 아닌 데이터베이스 디자인 문제가 있다는 것을 깨닫습니다. 열이 무엇인지 미리 아십니까? – HLGEM

+3

에픽 실패! 나도 열을 지정하지 않고 GROUP BY를하고 싶다. – SQLMason

+1

My Skyrim의 연금술 기술은 거의 100 레벨입니다. 아마도 도움을 줄 수 있습니다. – jrummell

답변

3

어떻게 개별 열 이름

당신은 할 수 없습니다를 사용하지 않고 노동 조합을 걸릴 것이다.

UNION을 사용하여 해당 번호와 컬럼 해야 경기의 종류.

+0

내가 본질적으로하고 싶은 것은 더미 열을 삽입하고 싶지는 않다는 것입니다. 하지만 사전에 알 수 없으므로 각 열 이름을 거치고 싶지는 않습니다. – user1489580

+0

@ user1489580 - 나는 당신에게 더 좋은 대답이 없습니다. HLGEM [주석]로 (http://stackoverflow.com/questions/11251532/sql-union-without-using-the-individual-column-names/11251564#comment14787232_11251532), 당신은 데이터베이스 설계 문제를 갖고있는 것 같다. 데이터베이스가 스키마를 공유하는 경우 열 이름과 숫자가 다른 이유는 무엇입니까? – Oded

+0

'사전에 알 수 없다'- 미리 열을 알 수 없다면 데이터로 무엇을 할 것입니까? – SQLMason

2

해당하는 두 개 이상의 테이블에 대해 INFORMATION_SCHEMA.COLUMNS을 검사하여 적절한 SELECT...UNION...SELECT 문을 합성 할 수 있습니다. 열이 준비되어 있으면 공통 열만 포함하도록 SQL을 작성할 수 있습니다.

사용하여 T-SQL :

SELECT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'FirstTable' 
UNION 
SELECT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'SecondTable' 

논리를 설명하기 위해 예를 들어 C#을 사용 : 테이블이 다른 열이있는 경우

List<string> sharedColumnNames = CallTheAforementionedSql(); 
string unionStatement = string.Format(
    "SELECT [{0}] FROM FirstTable UNION SELECT [{0}] FROM SecondTable", 
    string.Join("],[", shareColumnNames.ToArray()) 
); 

var stuff = ExecuteSql(unionStatement); 
+0

그러나 두 테이블의 열을 일치시키는 방법은 무엇입니까? 어쨌든 열 이름을 알아야합니다. – jrummell

+0

내 대답을 좀 더 명확하게 만들 것입니다 ... – bluevector

+0

C#으로 태그 지정되지 않았습니다. 그러나 여전히 proc에서이 작업을 수행 할 수 있지만 시간 낭비 일뿐입니다. – SQLMason