찾다

 >  Q&A  >  본문

RIGHT JOIN 후에 테이블 1과 일치하지 않는 테이블 2의 행이 제외되는 이유는 무엇입니까?

<p>PATSTAT에서 가져온 `our_sample`과 `tls207_pers_appln`이라는 두 테이블을 조인해야 합니다. </p> <p>`our_sample`에는 appln_id, appln_auth, appln_nr, appln_kind의 4개 열이 있습니다. </p> <p>`tls207_pers_appln`에는 appln_id, person_id, applt_seq_nr, invt_seq_nr의 4개 열이 있습니다. </p> `our_sample`에는 2191개의 행이 있으며, 그 중 일부(60개 행)에는 `tls207_pers_appln`에 해당 데이터가 없습니다. </p> <p>'our_sample'에 모든 appln_id를 유지하고 싶었기 때문에('tls207_pers_appln'에 일치하는 정보가 없더라도) RIGHT JOIN을 사용하여 두 테이블을 조인했습니다. </p> <p>그러나 생성된 뷰 `t2_tot_in_patent`에는 appln_id가 2096개만 있습니다. </p> <p>이것은 부분적으로 제가 설정한 제한 때문입니다(허용되는 `HAVING MAX(invt_seq_nr) > 0`인 특허만 선택했기 때문에 35개의 특허가 폐기되었습니다). 그러나 이로 인해 2191-35 = 2156개의 특허가 생성됩니다. </p> <p>대신에 저는 2096개의 특허를 받았습니다. 2191(our_sample에서) - 60(our_sample에서 appln_id 누락) - 35(invt_seq_nr = 0인 appln_id) </p> <p>그러나 RIGHT JOIN을 사용하는 전체 목적은 이러한 60개의 특허를 잃지 않아야 한다는 것입니다. 왜 그럴까요? </p> <pre class="brush:php;toolbar:false;">--특허당 총 발명자 수를 컴파일합니다: t2_tot_in_patent 존재하는 경우 보기 삭제 t2_tot_in_patent; t2_tot_in_patent AS 보기 만들기 SELECT m.appln_id, MAX(invt_seq_nr) AS tot_in_patent patstat2022a.tls207_pers_appln AS t7에서 오른쪽 외부 조인 cecilia.our_sample AS m ON t7.appln_id = m.appln_id GROUP BY appln_id HAVING MAX(invt_seq_nr) > 0</pre> <p><br /></p>
P粉668146636P粉668146636462일 전416

모든 응답(1)나는 대답할 것이다

  • P粉350036783

    P粉3500367832023-08-21 09:44:28

    추천:

    으아악

    SQL이 다른 테이블의 appln_id에 따라 그룹화되는 것일 수도 있습니다.

    이것을 시도해 보세요:

    으아악

    현재 코드에서는 최대값이 0보다 큰 행만 가져오지만, 다른 테이블에 없는 행은 해당 값이 NULL이므로 무시됩니다.

    회신하다
    0
  • 취소회신하다