Bonjour,
En fait je désire avoir votre avis sur quelques requêtes sql que je désire utiliser.
J'ai 2 tables :
- LdapResult consultée par une application dans laquelle l'utilisateur peut ajouter, modifier supprimer des enregistrements.(Champs: UniqueId, FirstName,LastName,Extension,Source, Mobile, Comment)
- Ldap qui est le résultat d'un lookup sur plusieurs serveur ldap et servant à mettre à jour la table LdapResult.(Champs : UniqueId,FirstName,LastName,Extension).
Le champs Source de la table LdapResult sert a différencier les enregistrements ajoutés par l'utilisateur de ceux ajouter par mon application.
Mon but est donc de retirer de LdapResult les enregistrements dont la valeur de Source est 'ldap' et qui ne sont plus dans la table Ldap; de mettre à jour dans LdapResult les enregistrement communs au deux tables dont une valeur à changé dans Ldap pour les champs FirstName, LastName et Extension et enfin d'ajouter dans LdapResult les enregistrements présent dans Ldap et pas dans LdapResult.
Pour ce faire j'utilise 3 requêtes dont voici la syntaxe (ma base de donnée est MySQL 5) :
Pensez-vous qu'il existe une solution plus simple ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 DELETE FROM VP.LdapResult WHERE Source='ldap' AND UniqueId NOT IN (SELECT UniqueId FROM VP.Ldap) UPDATE VP.LdapResult JOIN VP.Ldap ON Ldap.UniqueId = LdapResult.UniqueId SET LdapResult.FirstName=Ldap.FirstName, LdapResult.LastName=Ldap.LastName,LdapResult.Extension=Ldap.Extension WHERE LdapResult.Source='ldap' INSERT INTO VP.LdapResult (UniqueId,FirstName,LastName,Extension,Source) SELECT UniqueId, FirstName, LastName, Extension, 'ldap' AS Source FROM VP.Ldap WHERE UniqueId NOT IN (SELECT UniqueId FROM VP.LdapResult)
Mon approche est elle valable ?
D'avance merci,
Christian






Répondre avec citation
Partager