0
votes

Je veux extraire des colonnes dans une table A qui ne dispose pas d'une entrée dans le tableau B. Comment puis-je atteindre cela dans la ruche?

Je veux extraire des colonnes dans une table (A) qui ne dispose pas d'une entrée dans le tableau (B). Comment puis-je atteindre cela dans la ruche? Je travaille sur une requête (ci-dessous), mais cela ne fonctionne pas pour le moment, s'il vous plaît aider.

Joindre des colonnes: produit_Programme dans prd_raw_sf.sf_opportunity_dn à sfdc_product_name dans prd_raw_sf.sf_product_pcu_mapping p>

select *
FROM prd_raw_sf.sf_opportunity_dn  
JOIN prd_raw_sf.sf_si_accounts_mapping ON prd_raw_sf.sf_opportunity_dn.account_name = prd_raw_sf.sf_si_accounts_mapping.sfdc_account_name
WHERE prd_raw_sf.sf_opportunity_dn.account_name not in (select * from prd_raw_sf.sf_si_accounts_mapping);


0 commentaires

3 Réponses :


0
votes

Je recommande d'utiliser n'existe pas code>. Un rejoindre code> ne semble pas nécessaire:

select o.*
from prd_raw_sf.sf_opportunity_dn o 
where not exists (select 1
                  from prd_raw_sf.sf_si_accounts_mapping a
                  where o.account_name = a.account_name
                 );


0 commentaires

0
votes

Le rejoindre AntiPattern vous vient à l'esprit ici: xxx

La requête tente de joindre chaque enregistrement dans sf_opportunity_dn < / code> avec sf_si_accounts_mapping , alors le où les filtres filtres sur uniquement des enregistrements que ne pouvaient pas être joints.

avec un Les index suivants, cela devrait être une solution efficace: xxx

Remarque: les alias de table rendent la requête plus courte et plus facile à comprendre. Je les ai ajoutés à votre requête et je vous recommanderais de les utiliser à tout moment.


0 commentaires

0
votes

Vous pouvez utiliser rejoindre gauche code> et Joindre Semi rejoindre CODE>

Rejoindre à gauche Approche: P>

select a.*
    FROM prd_raw_sf.sf_opportunity_dn  as a
    LEFT SEMI JOIN prd_raw_sf.sf_si_accounts_mapping as b 
          ON a.account_name = b.sfdc_account_name


0 commentaires