RIGHT JOIN の後、テーブル 1 と一致しないテーブル 2 の行が除外されるのはなぜですか?
P粉668146636
P粉668146636 2023-08-20 21:18:55
0
1
405
<p>PATSTAT から取得した 2 つのテーブル `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> <p>`our_sample` には 2191 行があり、その一部 (60 行) には `tls207_pers_appln` に対応するデータがありません。 </p> <p>すべての appln_id を (`tls207_pers_appln` に一致する情報がない場合でも) `our_sample` に保持したかったため、RIGHT JOIN を使用して 2 つのテーブルを結合しました。 </p> <p>ただし、生成されたビュー `t2_tot_in_patent` には 2096 個の appln_id しかありません。 </p> <p>これは部分的には私が設定した制限によるものです (受け入れ可能な「HAVING MAX(invt_seq_nr) > 0」を持つ特許のみを選択したため、35 件の特許が破棄されました)。しかし、これにより 2191-35 = 2156 件の特許が取得されるはずです。 </p> <p>代わりに、2,096 件の特許を取得しました。 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 から RIGHT OUTER JOIN cecilia.our_sample AS m オン t7.appln_id = m.appln_id appln_id によるグループ化 MAX(invt_seq_nr) > 0 を有する <p><br /></p>
P粉668146636
P粉668146636

全員に返信(1)
P粉350036783

###提案:### リーリー

SQL が別のテーブルの appln_id に従ってグループ化されている可能性があります。

### これを試して: ### リーリー

現在、コードは最大値が 0 より大きい行のみをフェッチしますが、他のテーブルに存在しない行は値が

NULL

であるため無視されます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート