2016-07-29 3 views
2

"table1", "table2", "table3"등과 같이 이름이 비슷하게 많은 테이블이 있으며 쿼리에이 테이블을 모두 사용해야합니다. 그것들은 모두 결합 된 동일한 두 변수 ("ID"와 "날짜")를 포함합니다.SSMS에서 비슷한 이름을 가진 여러 테이블을 결합하는 간단한 방법은 무엇입니까?

적어도 25 개 이상의 테이블이 있으며 데이터베이스에 대한 읽기 전용 액세스 권한이 있으므로 데이터베이스를 결합 할 수 없으며 그렇게 할 수도 있습니다.

내 질문은 :이 모든 테이블을 조인하는 데 사용할 수있는 간단한 바로 가기가 있습니까? 이 SAS라면 내가 매크로를 만들 것이다, 그러나 나는이 작업을 수행 할 필요없이 2012 년

대신 마이크로 소프트 SQL Server Management Studio를 사용하고 있습니다 :

select * 
from table1 a 
join table2 b on a.id=b.id and a.date=b.date 
join table3 c on b.id=c.id and b.date=c.date 
join .... 
join .... 
join table25 y on x.id=y.id and x.date=y.date 

내가 좋아하는 일을하고 싶습니다 :

select * 
from merge(table1 - table25) using(id, date) 

위의 "병합"문을 적절한 것으로 바꾸십시오. 그런 일이 가능한가?

+0

정직하게 말하면, 25는 땀을 흘리지 않습니다. 하지만 별칭 설정은 생명의 은인입니다. 또한, 복사 및 과거는 당신의 친구입니다. 특히 조인이 유사한 경우 뒤로 이동하여 조정하십시오. –

+0

네, 완전히 할 수 있어요. 나는 항상 코드를 작성하는보다 효율적인 방법을 찾고 있지만 이것이 가능한지 아닌지 궁금해합니다. – MsTiggy

+1

아니요, 불가능합니다. – Jeremy

답변

-1

의견에서 지적한대로 간결한 구문은 존재하지 않습니다.

조인 열이 모든 using 키워드를 사용하여 포함하는 것과 동일한 이름된다는 사실을 이용 소요되는 SQL 단축 할 수있는 유일한 방법 :

select * 
from table1 a 
join table2 b using (id, date) 
join table3 c using (id, date) 
join .... 
join .... 
join table25 y using (id, date) 

을하지만 슬프게도, 심지어는 작동하지 않습니다를 당신은 using 키워드가 SQL Server에서 인식되지 않기 때문에. 그것은 다른 인기있는 데이터베이스에서 작동합니다.

+0

나는 항상 SSMS가'using' 키워드를 인식하지 못하는 이유를 궁금해했습니다. 그래서 성가신. – MsTiggy