[SQL] SQL 서버 - 자연의 부족 / X Y가 사용 JOIN (필드) 가입
SQLSQL 서버 - 자연의 부족 / X Y가 사용 JOIN (필드) 가입
(? 슬프게도) SQL 서버의 현재 레퍼토리에서 누락 된 SQL92 기능을 - 난 그냥 사용 / 가입 자연에 위로 읽어 봤는데.
누구는 SQL Server에 이러한 지원 DBMS에서왔다 (또는 다른 비 지원 DBMS) - 그들은 소리로 유용한로했다, 나 웜의 수 (수도 소리!)?
해결법
-
==============================
1.나는 내가 어떤 열 이름이 두 테이블에 존재해서 내가하지 않을 일을 할 수있는 가입 가능성 같이하지 않기 때문에 자연이 가입 사용하지 않습니다.
나는 내가 어떤 열 이름이 두 테이블에 존재해서 내가하지 않을 일을 할 수있는 가입 가능성 같이하지 않기 때문에 자연이 가입 사용하지 않습니다.
나는 가끔 조인 구문을 사용 사용 않지만, 그냥 자주 내가 더 복잡한 내가 결국 동등한 ON 구문으로 변환 할 수 있도록 지원할 수 있습니다 사용하는 것보다 조인 조건이 필요하다고 밝혀졌습니다.
-
==============================
2.당신은 진정으로 관계했던 DBMS를 고려겠습니까?
당신은 진정으로 관계했던 DBMS를 고려겠습니까?
출처 : 휴 다웬에 의해 "열 이름의 중요성"
-
==============================
3.그것은 편의의 문제입니다. 필수 불가결하지만 (모든 키 입력 어쨌든, 가까이 RSI 우리를 제공합니다) 대화 형 쿼리의 예를 들면, 그 자리가 있어야하지, 또는 생산 코드에서 SQL 작성 손의 몇 가지 간단한 사례 (예, 나는 그것을 썼다. 그리고 심지어 가입 볼 ) 나는 탈선하고있어, 자신 이외의 현명한 프로그래머에 의해 작성, 심각한 코드에서 사용. 그러나.
그것은 편의의 문제입니다. 필수 불가결하지만 (모든 키 입력 어쨌든, 가까이 RSI 우리를 제공합니다) 대화 형 쿼리의 예를 들면, 그 자리가 있어야하지, 또는 생산 코드에서 SQL 작성 손의 몇 가지 간단한 사례 (예, 나는 그것을 썼다. 그리고 심지어 가입 볼 ) 나는 탈선하고있어, 자신 이외의 현명한 프로그래머에 의해 작성, 심각한 코드에서 사용. 그러나.
SS는이 기능을 누락되었음을 확인을 찾을 때이 질문을 발견, 나는 그것을 얻었다. 나는 단지 신 포도 증후군에이 구문에 대한 증오의 양, I 속성에 당황하고있다. 건강에 나쁜하십시오 생색 톤 과자 (문법 설탕을 읽기)와 강의 될 때 나는 즐겁게 생각합니다. 당신은 어쨌든 필요하지 않습니다.
게다가, 조인을 사용 구문에 좋은 그것은 예를 들어,뿐만 아니라 열 별칭에, 단지 열 이름에없는 일이다 :
-- foreign key "order".customerId references (customer.id) SELECT c.*, c.id as customerId, o.* from customer c join "order" o using (customerId);
나는 "경우에만 (...), 더 나은 것 사용하여 가입"에 동의하지 않습니다. 또는 인수, 당신은 더 복잡한 조건을해야 할 수도 있습니다. 다른 관점에서, 왜 사용 ON 가입? 왜 순수하고 WHERE 절에 모든 조건을 이동하지?
SELECT t1.*, t2.* from t1, t2 where t2.t1_id = t1.id;
지금은 미친 가서 주장이 조인을 표현하는 가장 깨끗한 방법입니다 방법, 당신은 즉시 당신이 일반적으로, 어쨌든 ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ 필요 where 절에 이상의 조건을 추가 할 수 있습니다 수 ...
당신이 너무 사랑스러운이 특정 구문을 놓치지해야하지만, 그것을 가지고 있지 약 행복 거기에 아무것도 그래서 ( "가까이 휴. 그래서 좋은하지 이용한 가입해야합니다. 나는 많은 고통을 절약했다").
나는 개인적으로 사용 시간의 99 % 조인 동안 더 사용 또는 자연 조인이없는 경우 그래서, 나는 더 샤덴 프로이 데를 느낀다.
-
==============================
4.내가 사용 또는 자연 구문의 값을 볼 수 없습니다 - 당신이 만난로서 만 ON 일관는 휴대 성 측면에서 최고의 그래서 구현됩니다.
내가 사용 또는 자연 구문의 값을 볼 수 없습니다 - 당신이 만난로서 만 ON 일관는 휴대 성 측면에서 최고의 그래서 구현됩니다.
명시 적으로있는 것은 대안이 너무 상황에 대처하기 위해 제한 될 수 이외의 것을, 유지 보수도 좋습니다. 나는 또한 내 코드베이스가 일관성을 선호하는 것입니다.
from https://stackoverflow.com/questions/3277580/sql-server-lack-of-natural-join-x-join-y-usingfield by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 이름에 대괄호가 SQL 서버에 뭔가 이름을 바꾸려면? (0) | 2020.05.28 |
---|---|
[SQL] 쿼리의 반환에 날짜 삽입 곳에 아무도 없다 (0) | 2020.05.28 |
[SQL] 다른 데이터베이스에서 쿼리의 결과에 따라 데이터베이스 쿼리 (0) | 2020.05.28 |
[SQL] 콤마 구별 값 MySQL의 PHP 선택 횟수 데이터 (태그)를 구분 (0) | 2020.05.28 |
[SQL] SQL Server 2008의 리드 지연 기능의 대체 (0) | 2020.05.28 |