IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Update table temporaire


Sujet :

Développement SQL Server

  1. #21
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 220
    Points : 48
    Points
    48
    Par défaut
    Je pense que votre problème n'est pas en SQL , mais plutot que vous ne savez pas vraiment quoi faire de toutes vos données
    Ben si justement les données ayant un type et un commentaire je l’ai met dans la colonne correspondante et les autres dans description, c'est a dire tout se qui non pas de commentaire et tout ce qui on plusieurs numéro du même type.

    Excuser moi mais est ce qu'il est possible de faire ce que je veux faire en SQL?

  2. #22
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    comme je disais, vous ne savez pas quoi faire de vos données ! dans cette dernière description du "besoin", vous ne dites pas ce que vous voulez faire lorsque vous avez deux téléphones perso pour une seule et même personne !

  3. #23
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 220
    Points : 48
    Points
    48
    Par défaut
    vous ne dites pas ce que vous voulez faire lorsque vous avez deux téléphones perso pour une seule et même personne !
    Ben si j'ai deux téléphone perso pour la même personne la requête regarde pour cette personne si elle a déjà un numéro de téléphone perso. si elle en a pas, elle l'ajoute sinon elle le mais dans le champ description.

  4. #24
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 220
    Points : 48
    Points
    48
    Par défaut
    3/ Ensuite, une série de suppression de la table tmpSource, pour les numéros "facile" à classer :

    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    DELETE FROM tmpSource
    OUTPUT DELETED.IDPersonne, DELETED.Num, 'prive'
    INTO tmpCible
    WHERE Type LIKE 'TEL'
    AND (
        Commentaire LIKE '%prive%' 
        OR Commentaire LIKE '%perso%'
    )
    Je n'arrive pas a comprendre pourquoi supprimer se que je veux garder?

  5. #25
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    vous supprimez de la table source, et vous les placez en meme temps dans la table cible.
    Le tout en une seule commande

    L'idée est de vider de la table source les numéros que vous avez classifiés dans la table cible...

    Donc ne restent dans la table temporaire sources que les numéros que vous n'avez pas encore dispatchés...

    Il me semble notamment que si une personne n'avait aucun numéros "identifiable" grâce aux commentaires, vous voulez prendre les numéros sans commentaire, dans une ordre que je n'ai pas compris, mais pour alimenter vos colonne tel_pro, tel_prive,...
    Faire ainsi sera plus simple pour gérer les cas entre les deux : certains numéros identifiables, mais pas d'autres,...
    (car si vous vous basez sur une numéro de ligne, comme avec ROW_NUMBER(), les numéros déjà attribués vont fausser le résultat s'ils sont encore dans la table source)

  6. #26
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 220
    Points : 48
    Points
    48
    Par défaut
    vous supprimez de la table source, et vous les placez en meme temps dans la table cible.
    Le tout en une seule commande
    Donc je fais comment un insert et un delete de la ligne?
    Ce que vous appeler table source est cible sont bien les tables temporaire?

    dans une ordre que je n'ai pas compris, mais pour alimenter vos colonne tel_pro, tel_prive,...
    Le problème est que les deux bases ne sont pas sur le même serveur et que la requête que j'essaye de faire va s’exécuter tous les jours pour mettre a jour les nouveaux clients.


    Enfaite ma table temporaire c'est elle qui a des colonnes tel_pro tel_prive etc..

    Ce n'ai pas vraiment un ordre que je voulais faire je voulais que
    la personne ayant (dans la table de l'entreprise) TYPE='TEL' and Commentaire='prive' se mette (dans la table temporaire) dans la colonne table prive ainsi de suite...
    et se pour lequel il n'y a pas de commentaire ou pour ce ayant plusieurs numéro du même type un champ commentaire dans ma table temporaire (qui serait représenter par un textarea dans un logiciel) ou je concatène tous les numéro en trop.

    Comme ça quand je met les données dans la base du CRM j'ai juste a mettre tel colonne dans tel colonne et le tri est réaliser avant.

    Mais bon je pense trop réagir par rapport au langage de programmation

  7. #27
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par france38 Voir le message
    la requête que j'essaye de faire va s’exécuter tous les jours pour mettre a jour les nouveaux clients.
    ça change tout !

    La méthode que je vous proposais peut être adpatée pour une phase de migration, mais pas pour des procédures planifiées tous les jours, en production !

    comment allez vous synchroniser tout ça ?

    Comment allez vous faire, quand dans la base source, un numéro sans commentaire sera mis à jour, avec un commentaire comme 'telephone pro" par exemple ? Ce numéro sera déjà peut être dans la colonne tel_prive de la base cible. Bref, il y a pléthore de cas, vous devez les prendre en compte et définir ce que vous voulez faire dans chacun d'eux !

    Vous devez définir clairement votre besoin, avant de chercher des solutions techniques pour y répondre.

    Pourquoi ne gardez vous pas un modèle plus proche de la base source dans ce cas ? une table contenant les numéros de téléphone, l'ID de la personne, le type (qui pourrait être a null si un numéro n'est pas identifié) et éventuellement un commentaire ?

  8. #28
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 220
    Points : 48
    Points
    48
    Par défaut
    Bonjour

    ça change tout !
    Pardon de ne pas l'avoir préciser plutôt

    comment allez vous synchroniser tout ça ?
    Je ne sais justement pas encore comment je vais faire cela.

    Pour l'instant j'ai essayer une copie sur les noms des personnes avec les package SSIS (il parait que il peuvent s’exécuter quand on veut dans sql server)

    Comment allez vous faire, quand dans la base source, un numéro sans commentaire sera mis à jour, avec un commentaire comme 'telephone pro" par exemple ? Ce numéro sera déjà peut être dans la colonne tel_prive de la base cible. Bref, il y a pléthore de cas, vous devez les prendre en compte et définir ce que vous voulez faire dans chacun d'eux !
    Justement j'ai parler de ce cas avec mon maitre de stage. Il ma dit que l’importance était qu'il ne fallait pas perdre d'information.

    C'est pour cela que l'on a penser à faire un champ "four tous" ou on pourrais mettre tous les numéros dont on ne peux pas savoir si c'est un prive, home, portable, et tous se qui est en double et ceci pour chaque personne.

    Et par la suite les utilisateurs du CRM replacerons les données qui sont mal placer.

    Ceci donnerais table final
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    NOM    PRENOM       TEL_PRIVEE  TEL_PORTABLE ...       MAIL               COMMENTAIRE
    jean     jean           04....          06....          ..@gmail    06...
                                                                                 04...
    bob      bob            04....         06....          ..@hotmail 06...
                                                                                 04...
    Donc la jean à deux portable le deuxième se met dans commentaire comme ça on peut toujours l'avoir.

    Est ce que ceci serait réalisable?

    Pourquoi ne gardez vous pas un modèle plus proche de la base source dans ce cas ? une table contenant les numéros de téléphone, l'ID de la personne, le type (qui pourrait être a null si un numéro n'est pas identifié) et éventuellement un commentaire ?
    Ben par ce que la base de données du CRM est déjà faite, et surtout que on peut faire des campagnes emailling (par exemple) et si tous est mélanger.

    merci de votre aide

  9. #29
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par france38 Voir le message
    Et par la suite les utilisateurs du CRM replacerons les données qui sont mal placer.
    Parce qu'en plus, les données de la cible pourront etre modifiées... ces modifications devront-elles être répercutées dans la base source ?
    comment allez vous faire pour synchroniser sans écraser les modifications effectuées dans la base cible par les utilisateurs ?

    Citation Envoyé par france38 Voir le message
    Ben par ce que la base de données du CRM est déjà faite, et surtout que on peut faire des campagnes emailling (par exemple) et si tous est mélanger.
    merci de votre aide
    Donc si je comprend bien, maintenant que la base est modélisée, vous vous demandez ce que vous allez bien pouvoir faire de tout ça
    En général, on cherche une solution technique pour répondre à un besoin, et non un besoin pour exploiter une solution technique

    On dit que l'on apprend mieux grâce aux erreurs, et à ce titre, vous avez de la chance : votre stage va être extrêmement formateur !

    Soyez force de proposition : proposez la modification du modèle de votre base cible, avec une table supplémentaire pour les numéros de téléphone (et une pour les mails). Avec éventuellement une vue portant sur la table client et ces deux nouvelles tables (Trois en fait, si on crée en plus une table statique pour les types de numéros : prive, perso, non-identifié,....), vous pouvez en plus proposer un modèle externe proche de votre modèle actuel pour le plus grand bonheur des développeurs

  10. #30
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 220
    Points : 48
    Points
    48
    Par défaut
    Parce qu'en plus, les données de la cible pourront etre modifiées... ces modifications devront-elles être répercutées dans la base source ?
    comment allez vous faire pour synchroniser sans écraser les modifications effectuées dans la base cible par les utilisateurs ?
    Non elle ne seront pas récupéré dans la base source.
    Bonne question je ne sais pas encore comment synchroniser car pour l'instant ceci ne marche pas.

    Donc si je comprend bien, maintenant que la base est modélisée, vous vous demandez ce que vous allez bien pouvoir faire de tout ça
    En général, on cherche une solution technique pour répondre à un besoin, et non un besoin pour exploiter une solution technique
    La base source existe depuis longtemps moi je dois récupérer les données pour pouvoir l'ai analyser dans un logiciel CRM.

    Soyez force de proposition : proposez la modification du modèle de votre base cible, avec une table supplémentaire pour les numéros de téléphone (et une pour les mails). Avec éventuellement une vue portant sur la table client et ces deux nouvelles tables (Trois en fait, si on crée en plus une table statique pour les types de numéros : prive, perso, non-identifié,....), vous pouvez en plus proposer un modèle externe proche de votre modèle actuel pour le plus grand bonheur des développeurs
    Oui mais je ne peux pas faire cela car le logiciel CRM est un logiciel déjà tout fait (acheter). Modifier la base veux dire modifier le logiciel ceci n'est pas possible. le problème c'est qu'il n'y a pas de développeur.

  11. #31
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Pour l'instant j'ai essayer une copie sur les noms des personnes avec les package SSIS (il parait que il peuvent s’exécuter quand on veut dans sql server)
    Je ne pense pas que vous ayez besoin d'un package SSIS pour ce faire.
    Les packages SSIS peuvent effectivement être appelés par un job que vous planifiez, mais on peut aussi le faire avec une procédure stockée

    La base source existe depuis longtemps moi je dois récupérer les données pour pouvoir l'ai analyser dans un logiciel CRM.
    D'accord mais comme vous avez plusieurs types de numéros et d’adresses mail dans la base de données CRM, comment allez-vous les trier si vous n'avez pas de commentaire ?
    On ne peut pas les mettre au hasard dans la table du logiciel CRM !

    De même si les données peuvent être mises à jour dans la base de données cible, et que c'est un nouveau numéro de même type (professionnel, privé, ...) pour la même personne, que fait-on ? on le copie dans une autre colonne ? laquelle ? ou on l'écrase ?

    Sans cela on ne peut pas aller plus loin.

    Dans tous les cas il me semble que votre copie de données devra se faire en deux étapes :

    - la première de copie des infos de la base source vers la base cible
    - la deuxième par l'écrire d'une procédure stockée que vous appelez dans un trigger sur la table de la base de données source.

    @++

  12. #32
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 220
    Points : 48
    Points
    48
    Par défaut
    Je ne pense pas que vous ayez besoin d'un package SSIS pour ce faire.
    Les packages SSIS peuvent effectivement être appelés par un job que vous planifiez, mais on peut aussi le faire avec une procédure stockée
    Oui surement je suis ouvert à toute proposition car je suis un peu perdu la.
    Mais la procédure stockée peut être une bonne chose.

    D'accord mais comme vous avez plusieurs types de numéros et d’adresses mail dans la base de données CRM, comment allez-vous les trier si vous n'avez pas de commentaire ?
    On ne peut pas les mettre au hasard dans la table du logiciel CRM !
    Moi ce que je penser c'est dans la base du CRM il y a un champ "description"
    donc utiliser ce champ pour tous se qui on un commentaire différent de "Bureau", "Privée", "Travail" et dans se champ concaténer Numéro + Commentaire de la base de données source (celle de l'entreprise).
    Se qui permettrai toujours de retrouver si la personne à plusieurs numéro ou si elle a deux numéro du même type.
    Après je ne ces pas si cela est une bonne idée mais je n'en vois pas d'autre pareil je suis ouvert à toute proposition.

    De même si les données peuvent être mises à jour dans la base de données cible, et que c'est un nouveau numéro de même type (professionnel, privé, ...) pour la même personne, que fait-on ? on le copie dans une autre colonne ? laquelle ? ou on l'écrase ?

    Sans cela on ne peut pas aller plus loin.
    Oui c'est vrai ceci est un problème.
    Il me semble difficile de le remplacer car imaginons qu'il est plusieurs numéro du même type et qu'il y en ait un dans commentaire et l'autre dans "TEL_PRIVE","TEL_BUREAU" ... lequel va ton remplacer.

    Peu être l'ajouter dans "Description" concaténé avec la date de la synchronisation pour voir qu'il est plus récent

    Merci d'avance pour votre aide.

  13. #33
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Alors confirmez-moi que j'ai bien compris ce que je vais écrire, et je vous donne les requêtes :

    - Si la personne a un numéro ou un mail dans la table source d'un type (professionnel, privé, ...) correspondant à aucun des types de numéro ou de mail de la table cible (CRM), alors on le stocke dans la colonne qui convient

    - Si le numéro ou le mail de la table source n'est pas typé (professionnel, privé, ...), ou qu'il ne correspond à aucun des types de numéro ou de mail de la table cible (CRM), alors on l'ajoute / concatène dans la colonne commentaire.

    Cela implique que vous unifiez les numéros / mails pour la première phase que je vous ai décrit dans ce post.

    La seconde phase est l'écriture d'une procédure stockée que vous appelez dans un trigger sur INSERT / UPDATE /DELETE de la table source pour maintenir en conséquence la table de CRM.
    Elle implique la création d'un serveur lié sur l'instance SQL Server source (c'est-à-dire que l'on va déclarer à cette instance comment communiquer avec le serveur cible).

    Je pense que l'on peut envisager cette solution, car je suppose que cette table ne subira pas des milliers de modifications sur une période de temps courte. Dites-moi si je me trompe

    @++

  14. #34
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 220
    Points : 48
    Points
    48
    Par défaut
    - Si la personne a un numéro ou un mail dans la table source d'un type (professionnel, privé, ...) correspondant à aucun des types de numéro ou de mail de la table cible (CRM), alors on le stocke dans la colonne qui convient
    C'est correspondant à un des types de numéro ou de mail de la table cible (CRM), alors on le stocke dans la colonne qui convient

    Oui c'est correct, seulement pas pour les mails juste pour les numéros de téléphone car dans la base du CRM il on créer une table mail donc la personne peu posséder plusieurs mails.
    Il faut donc faire ceci juste pour les numéros de téléphone

    - Si le numéro ou le mail de la table source n'est pas typé (professionnel, privé, ...), ou qu'il ne correspond à aucun des types de numéro ou de mail de la table cible (CRM), alors on l'ajoute / concatène dans la colonne commentaire.
    Oui c'est exactement ça.
    Mais pareil que pour au dessus il faut traiter uniquement les numéros de téléphone.

    Sinon est-ce que ceci vous parez telle une bonne solution ?

    La seconde phase est l'écriture d'une procédure stockée que vous appelez dans un trigger sur INSERT / UPDATE /DELETE de la table source pour maintenir en conséquence la table de CRM.
    Elle implique la création d'un serveur lié sur l'instance SQL Server source (c'est-à-dire que l'on va déclarer à cette instance comment communiquer avec le serveur cible).
    Oui les serveurs liée j'ai déjà essayer donc je pense y arriver.
    Je voudrais juste préciser que pour l'instant il n'y a aucun trigger dans la table source.

    Je pense que l'on peut envisager cette solution, car je suppose que cette table ne subira pas des milliers de modifications sur une période de temps courte. Dites-moi si je me trompe
    Oui cela me semble une bonne solution.
    Non la table ne subira pas énormément de modification sur une période courte.

    @++

  15. #35
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 220
    Points : 48
    Points
    48
    Par défaut
    Bonjour

    Est-ce-que quelqu'un peu m'aider pour les requêtes?

    merci d'avance.

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/07/2014, 11h46
  2. update sur plusieurs lignes avec table temporaire
    Par -=mateo=- dans le forum SQL
    Réponses: 3
    Dernier message: 23/12/2010, 14h40
  3. UPDATE et Table temporaire
    Par dany13 dans le forum Développement
    Réponses: 5
    Dernier message: 10/12/2009, 14h38
  4. Nettoyage de table temporaire
    Par Alain Dionne dans le forum Bases de données
    Réponses: 5
    Dernier message: 28/02/2004, 20h44
  5. UPDATE : table à partir d'une autre
    Par Laura dans le forum Requêtes
    Réponses: 2
    Dernier message: 28/10/2003, 21h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo