Pourquoi après RIGHT JOIN, les lignes du tableau 2 qui ne correspondent pas au tableau 1 sont exclues ?
P粉668146636
P粉668146636 2023-08-20 21:18:55
0
1
408
<p>Je dois joindre deux tables : `our_sample` et `tls207_pers_appln`, qui proviennent de PATSTAT. </p> <p>`our_sample` comporte 4 colonnes : appln_id, appln_auth, appln_nr, appln_kind. </p> <p>`tls207_pers_appln` comporte 4 colonnes : appln_id, person_id, applt_seq_nr, invt_seq_nr. </p> <p>`our_sample` comporte 2 191 lignes, dont certaines (60 lignes) n'ont aucune donnée correspondante dans `tls207_pers_appln`. </p> <p>Parce que je voulais conserver tous les appln_ids dans `our_sample` (même s'ils n'ont aucune information correspondante dans `tls207_pers_appln`), j'ai utilisé un RIGHT JOIN pour joindre les deux tables. </p> <p>Cependant, la vue générée `t2_tot_in_patent` n'a que 2096 appln_ids. </p> <p>Cela est en partie dû aux restrictions que j'ai définies (35 brevets ont été rejetés car je n'ai sélectionné que ceux avec `HAVING MAX(invt_seq_nr) > 0`, ce qui est acceptable). Mais cela devrait donner 2191-35 = 2156 brevets. </p> <p>Au lieu de cela, j'ai obtenu 2096 brevets, à savoir : 2191 (dans our_sample) - 60 (appln_id manquant dans our_sample) - 35 (appln_id avec invt_seq_nr = 0). </p> <p>Mais le but même de l'utilisation de RIGHT JOIN est que ces 60 brevets ne doivent pas être perdus. Pourquoi cela est-il ainsi? </p> <pre class="brush:php;toolbar:false;">--Compilez le nombre total d'inventeurs par brevet : t2_tot_in_patent VUE DROP SI EXISTE t2_tot_in_patent ; CRÉER UNE VUE t2_tot_in_patent AS SELECT m.appln_id, MAX(invt_seq_nr) AS tot_in_patent DE patstat2022a.tls207_pers_appln AS t7 JOINTURE EXTÉRIEURE DROITE cecilia.our_sample AS m SUR t7.appln_id = m.appln_id GROUPER PAR appln_id AVOIR MAX(invt_seq_nr) > 0</pre> <p><br /></p>
P粉668146636
P粉668146636

répondre à tous(1)
P粉350036783

Recommandation :

GROUP BY m.appln_id

Peut-être que le SQL regroupe selon l'appln_id d'une autre table.

Essayez ceci :

HAVING MAX(invt_seq_nr) > 0 OR MAX(invt_seq_nr) IS NULL

Actuellement, votre code n'obtient que les lignes dont la valeur maximale est supérieure à 0, mais les lignes qui n'existent pas dans l'autre tableau sont ignorées car leurs valeurs sont NULL.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal