Je me demandais si quelqu'un pouvait m'aider avec ça.

Ceci est une représentation rapide d'un schéma beaucoup plus compliqué. Je cherche à obtenir cette implémentation qui fait partie d'un plus grand proc stocké.

Donc, fondamentalement, je cherche à obtenir un ensemble de résultats comprenant ClientId, Company Name, Setting1, Setting2 et Setting3.

Ainsi, si un ID d'entreprise n'existe pas dans le tableau Paramètres de remplacement, ils s'abonnent à leurs paramètres par défaut respectifs. Mais s'ils ont un ID dans la table SettingsOverride, le jeu de résultats doit renvoyer ces paramètres.

enter image description here

Ainsi, pour cet exemple, le jeu de résultats ressemblerait à ceci :

enter image description here

-1
nsquires 15 févr. 2020 à 22:59

1 réponse

Meilleure réponse

Vous pouvez rejoindre deux fois:

select
    c.clientId,
    c.companyName,
    coalesce(so.setting1, df.setting1) setting1,
    coalesce(so.setting2, df.setting2) setting2,
    coalesce(so.setting3, df.setting3) setting3
from company c
inner join defaul_settings cs on cs.clientId = c.clientId
left join settings_override so on so.companyId = c.companyId

La partie critique consiste à left join table settings_override, de sorte que les entreprises qui n'ont pas de dérogation ne sont pas exclues de l'ensemble de résultats. Ensuite, vous pouvez utiliser colasce() pour utiliser la valeur par défaut lorsqu'il n'y a pas de remplacement.

1
GMB 15 févr. 2020 à 20:08