2013-02-18 5 views
1

J'ai une table de configuration dans laquelle j'ai 30 enregistrements de configuration par défaut. Pour les autres configurations, j'ajoute de nouveaux enregistrements pour ceux qui sont différents. Ex:Requête SQL pour remplacer les enregistrements

ConfigurationId  SettingKey   SettingValue 
1(default)    A     2 
1(default)    B     5 
1(default)    C     9 
.      .     . 
.      .     . 
2      A     5 
3      B     7 

Ici vous pouvez voir ConfigurationId 1 qui est pour les paramètres par défaut ont tous les 30 paramètres. Pour d'autres configurations comme 2 a paramètre que pour A et 3 a seulement B

quand j'aille chercher record pour ID2, je veux tous SettingKey et SEttingValue qui ne sont pas présents dans 2 devraient provenir de 1 et qui existent dans 2 sera remplacé comme celui-ci

ConfigurationId  SettingKey   SettingValue 
2      A     5 
2      B     5 
2      C     9 

donc, pour 2, tous les paramètres 30 devraient provenir de 1 qui sera écrasée par les paramètres disponibles dans 2 juste au-dessus SettingKey A a été remplacé par 2. B, C sont de 1

Veuillez me demander si je ne suis pas clair.

+0

À quoi correspond la balise [linq]? –

Répondre

0

Vous pouvez l'essayer.

DECLARE @SeletedConfigurationID int 

SELECT Settingkey, SettingValue 
FROM 
    (
    SELECT SettingKey, SettingValue, 
     row_number() over (partition BY SettingKey ORDER BY ConfiurationID DESC) AS rn 
    FROM Configuration 
    WHERE ConfigurationID = 1 
     OR ConfigurationID = @SelectedConfigurationID 
    ) AS Settings 
WHERE rn = 1 
ORDER BY SettingKey 

La requête dérivé interne obtient les lignes de la configuration par défaut (ConfigurationID = 1) et les lignes pour la configuration sélectionnée. Il définit un numéro de ligne pour chaque clé de configuration où la ligne 1 proviendra de la configuration sélectionnée, si elle existe. Sinon, la valeur de la configuration par défaut est utilisée.

La requête externe sélectionne uniquement la première ligne, où le numéro de ligne est 1.

Questions connexes