복붙노트

[SQL] 자기 무엇을 위해 가입한다? (영어로)

SQL

자기 무엇을 위해 가입한다? (영어로)

나는 이미-가입 자체가 무엇을 알고있다. 내가이 실제로 중복 된 질문이 아니다 알 수 있도록 또한, 스택 오버 플로우의 다른 모든 컴퓨터 운영 설명을 읽을 수 있도록 목록을 나에게 표를 제공하거나 가입하지 마시기 바랍니다, 감사합니다.

나는 그것을 할 이유를 추구하고 무엇을 (그리고 제발,뿐만 아니라 자체 참조 직원 관리자 예).

일반 영어, 나는 자기 결합을에서 달성하기 위해 무엇을 추구 것인가?

내 사용은 대학 과정에 있으며, 관계형 대수 각도에서 오는. 나는 몇 년 만 할 수있는 강사 사랑에 대한 몇 가지 SQL을 수행 한 (하나 이상의 필드 이름을 바꾼 후) 테이블 자체를 조인. 나는 액션이 ​​그가 수행하려는 것이 무엇인지 궁금하네요 아니므로 뭔가가 종종 SQL에서 수행하지만 그는 꽤 자주 그 일에 대해 예리한 것 같다.

나는 많은 사람들이 정보를 요청했지만 "이미 대답"하지만 모든 대답은 "왜 존재가 이루어집니다"NOT 운영 안내 줄로 표시되는 때 내가 여기 물어 줄 알았는데.

해결법

  1. ==============================

    1.이 머리에 못을 안타 때문에 직원 관리 예, 그래서 일반적인 이유입니다. 모든 가입과 같은 자체는하지만, 같은 테이블에서 오는 두 행, 열 쌍의 테이블 외모에 가입 할 수 있습니다. 정말 아무것도 특별한.

    이 머리에 못을 안타 때문에 직원 관리 예, 그래서 일반적인 이유입니다. 모든 가입과 같은 자체는하지만, 같은 테이블에서 오는 두 행, 열 쌍의 테이블 외모에 가입 할 수 있습니다. 정말 아무것도 특별한.

  2. ==============================

    2.데이터베이스 설계자는 각 기본 테이블 술어 (열 이름에 의해 파라미터 문장 템플릿)을 제공합니다.

    데이터베이스 설계자는 각 기본 테이블 술어 (열 이름에 의해 파라미터 문장 템플릿)을 제공합니다.

    Parent(person, child) -- person PERSON is parent of person CHILD
    Likes(person, food) -- person PERSON likes food FOOD
    

    관계형 표현 (기본 테이블 이름 또는 운영자 호출)의 값이 조건에서 진정한 제안 (문을) 할 행을 보유하도록 관계 대수 설계되었습니다.

    /* (PERSON, CHILD) rows where
    person PERSON is parent of person CHILD
    */
    Parent
    

    자연 가입 오퍼레이터 호출 인 식의 술어는 그 입력의 조건이다.

    /* (PERSON, CHILD, FOOD) rows where
    person PERSON is parent of person CHILD AND person PERSON likes food FOOD
    */
    Parent NATURAL JOIN Likes
    

    UNION 및 OR 동감 마이너스 및 AND NOT, PROJECT 컬럼 (들) 및 다른 열이 존재), 파라미터의 칼럼 및 조건의 이름 변경 및 AND 조건 RENAME 제한.

    /* (CHILD, FOOD) rows where
    there EXISTS a value for PERSON such that
        person PERSON is parent of person CHILD AND person CHILD likes food FOOD
    */
    PROJECT child, food (Parent NATURAL JOIN (RENAME person:=child Likes))
    

    그래서 모든 쿼리 식의 값은 진정한 문에 그 조건을 행을 보유하고 있습니다.

    우리는 자연이 0 개 이상의 renamings의 시퀀스를 통해 원본에서 가져온 두 테이블의 가입으로 대수 테이블의 자체 조인을 정의하자. 우리 자연 위의 당 및 조건의 충족시키는 행을 위해 가입. 우리는 파라미터 / 컬럼 만 다른 조건을 통해 표현 된 결과 술어를 만족 행하고자 할 때 A-가입 자기가 발생한다.

    /* (PERSON, FOOD, CHILD) rows where
    person PERSON likes food FOOD AND person CHILD likes food FOOD
    */
    Likes NATURAL JOIN (RENAME person:=child Likes)
    

    자체 조인 이외의 특정 응용 프로그램에서 특정 쿼리에 발생에 대한 아무것도 특별한이있다.

    SQL SELECT DISTINCT 문 대수 사업자를 통해 설명 될 수있다. 또한 쿼리 조건을 계산합니다. 테이블 열의 첫 번째는 테이블 별칭 (상관 관계 이름) 점을 접두어로 이름이 바뀝니다. (SQL 자연 공통 열을 점하지 않습니다 가입하세요.) 새로운 테이블 자연이 결합됩니다. ON과 WHERE는 조건에 따라 제한합니다. 그런 다음 SELECT DISTINCT 절은 반환 된 열 및 프로젝트 멀리 원치 않는 점으로 구분 된 열에서 점을 제거하기 위해 이름을 변경합니다.

    도팅 입력 열 이름 변경 : 우리는 직접 술어로 SQL 변환 할 수 있습니다. 자연 / CROSS / INNER는, ON & WHERE주고 가입하고. 각 점없는 결과 열은를 제공하고 그것의 점선 버전에 해당된다는 점. 마지막으로 모든 점선 열을 제공 떨어 존재한다.

    /* same as above */
    /* (PERSON, FOOD, CHILD) rows where
    there EXISTS values for P.* & C.* such that
            PERSON = P.PERSON AND CHILD = C.person AND FOOD = P.FOOD
        AND person P.CHILD likes food P.FOOD
        AND person C.CHILD likes food C.FOOD
        AND P.FOOD = C.FOOD
    */
    SELECT DISTINCT p.person AS person, c.person AS child, p.food AS food
    FROM Likes p INNER JOIN Likes c
    ON p.food = c.food
    

    다시 : SQL에서 우리는 여러 테이블 별칭은 같은 테이블 값과 연관된 가입 할 때 자체 조인이되고 말; 우리는 일부 매개 변수 / 열에서 다른 조건의 측면에서 의미 쿼리를 표현할 수있는 수단은 애플리케이션 측면에서, 발생이 용 응용 프로그램 또는 테이블의 의미에 대해 아무것도 특별한이있다.

    이 재에 대한 링크를 포함하는 일이 다시 쿼리의 의미, 특히 의미를 자체 조인을 참조하십시오.

  3. from https://stackoverflow.com/questions/36352271/what-is-a-self-join-for-in-english by cc-by-sa and MIT license