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 :

Trigger sur table SQL (Express 2008 R2) [2008R2]


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 17
    Par défaut Trigger sur table SQL (Express 2008 R2)
    Bonjour,

    Je suis débutant en sql aussi merci de votre indulgence...
    Dans le cadre d'un petit développement, je dois pouvoir mettre à jour une table SQL depuis une autre. Cela doit se faire dans un trigger.
    Pour les 2 tables, un identifiant (ID) permet de faire l'inner join.
    Problème, ma table cible contient une ligne par ID avec 5 champs (du même enregistrement) à mettre à jour : vb1, vb2, vb3, vb4 et vb5
    alors que la table source contient une ligne par ID ET par valeur de vb que je dois récupérer...
    Je cale!
    Merci de vos suggestions.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    ça s'appelle de la dénormalisation et saimal
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    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
    Par défaut
    Bonjour,

    Cherchez avec le mot clef PIVOT.
    Vous trouverez des exemples sur le forum (et des explications indiquant pourquoi il ne faut pas le faire )

  4. #4
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    si le nombre de colonne (5) est figé

    vous pouvez aussi procéder autrement mais il me faudrait la structure de votre deuxième table

  5. #5
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 17
    Par défaut
    Oui le nb de colonnes est figé à 5 dans mon cas.
    La 2ème table est du type :
    ID, vb ou je peux avoir plusieurs enregistrements avec un ID identique mais comportant des vb différents. Ce sont ces valeurs que je dois récupérer dans la 1ère table...
    Merci de votre aide

  6. #6
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 17
    Par défaut
    Précisions : dans la table2, les valeurs de vb sont variables pour chaque ID et chaque enregistrement...

  7. #7
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 206
    Billets dans le blog
    16
    Par défaut
    Nicos42,

    Votre table CIBLE contient 5 attributs vb1, vb2, ..., vb5 constituant une liste ordonnée par construction.

    Votre table SOURCE contient 5 lignes, c’est un ensemble de 5 paires <ID, vbj> et comme dans tout ensemble dans le contexte relationnel, l’ordre des éléments est quelconque, il n'est pas significatif : comment savoir parmi ces 5 paires de la table SOURCE quelle est celle qui met à jour par exemple l’attribut vb1 cible ?

    Avant de vous enliser à cause d’une approche hasardeuse de la modélisation, il est temps de repartir à zéro, casser la structure de la table CIBLE et bâtir un modèle dans l’esprit du modèle relationnel de données, la table SOURCE doit être structurée de façon saine, à l’image de la table SOURCE (une paire( ID, vb) par ligne). Pour les deux tables, il faut aussi ajouter un attribut complétant l'identifiant ID, car vos attributs vb sont modifiables, donc impropres à participer à l'identification.

    S’il s’agit de présenter l’information sous la forme (ID, b1, v2, ..., vbn), il existe des solutions pour cela (CUBE, UNION, ....), mais cela ne doit avoir aucune incidence sur la structure des tables.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  8. #8
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 17
    Par défaut
    Dans mon exemple (la vraie table à plus de colonnes) :
    ID et VB où ID est l'identifiant qui me permet de regrouper les différents VB

    Ce qui pourrait être TABLE2 :
    ID = 1;VB = 12
    ID = 1; VB = 15
    ID = 2; VB = 10
    ID = 2; VB = 12
    ID = 2; VB = 18
    ID = 2; VB = 15
    ID = 3; VB = 20
    ect...
    Alors que Table1 :
    ID = n; VB1 = à compléter; VB2 = à compléter; VB3 = à compléter; VB4 = à compléter; VB5 = à compléter;

    Ce que je veux obtenir :
    Table1 :
    ID = 1; VB1=12;VB2=15;;;
    ID = 2;VB1=10;VB2=12;VB3=18;VB4=15;;
    ID = 3;VB1=20;;;;

  9. #9
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Et pourquoi la valeur 18 pour l'ID 2 serait-elle placée dans la colonne VB3 et pas VB4 ou VB2 ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  10. #10
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 17
    Par défaut
    En réponse à la question de AL1_24, l'ordre n'aura pas d'importance. Il faut juste commencer par renseigner VB1 puis VB2 puis VB3 puis etc... si tant est qu'il y ait plusieurs VB pour un même ID

  11. #11
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    Structure de la table merci: liste des colonnes par exemple

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2008] avis sur Microsoft® SQL Server® 2008 Management Studio Express
    Par fahdijbeli dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 13/09/2013, 07h43
  2. Réponses: 4
    Dernier message: 05/04/2011, 08h32
  3. Requête paramètrer sur table SQL Server 2000
    Par Andry dans le forum Bases de données
    Réponses: 4
    Dernier message: 21/06/2007, 11h24
  4. Boucle while avec action sur table SQL
    Par kamikazbe dans le forum JDBC
    Réponses: 4
    Dernier message: 01/06/2007, 11h46
  5. URGENT: tri sur table SQL
    Par clairette dans le forum Langage SQL
    Réponses: 4
    Dernier message: 26/05/2005, 14h53

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