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

MS SQL Server Discussion :

Requête d'insertion


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2012
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Requête d'insertion
    Besoin d'aide sur une requête qui permet d'ajouter une station sur la table distance avec tous les probabilité possible avec la table station.
    Exemple sur l'image: Lorsque j'ajoute une station Y il ajoute automatiquement tous les cas possible ... la distance reste toujours 0,00


    Merci d'avance

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 387
    Points
    18 387
    Par défaut
    Un déclencheur semble tout indiqué.
    Vos tables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    create table dbo.station
    (
        idstation int identity(1, 1) not null
      , station   char(1)            not null
      , nbr       int                not null
      , constraint pk_station primary key (idstation)
      , constraint ak_station unique      (station)
    );
     
    create table dbo.distance
    (
        iddistance   int identity(1, 1) not null
      , ArretInitial char(1)            not null
      , ArretFinal   char(1)            not null
      , distance     decimal(5,2)       not null default 0
      , constraint pk_distance primary key (iddistance)
      , constraint fk_distance_station_initial
          foreign key (ArretInitial)
          references dbo.station (station)
      , constraint fk_distance_station_final
          foreign key (ArretFinal)
          references dbo.station (station)
    );
     
    insert into station (station, nbr) values ('F', 12);
    insert into station (station, nbr) values ('R', 15);
    insert into station (station, nbr) values ('J',  2);
    insert into station (station, nbr) values ('S',  8);
    insert into station (station, nbr) values ('H',  5);
    Le trigger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    create trigger dbo.tai_station on dbo.station
    after insert as
    begin
        INSERT INTO Distance (ArretInitial, ArretFinal)
        SELECT I.Station, I.Station
          FROM inserted as I
         UNION ALL      
        SELECT I.Station, S.Station
          FROM Station as S
               CROSS JOIN inserted as I
         WHERE I.Station <> S.Station
         UNION ALL
        SELECT S.Station, I.Station
          FROM Station as S
               CROSS JOIN inserted as I
         WHERE I.Station <> S.Station;
    end;
    Le test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    select * from dbo.station;
     
    idstation   station nbr
    ----------- ------- -----------
    1           F       12
    2           R       15
    3           J       2
    4           S       8
    5           H       5
     
    (5 row(s) affected)
     
    select * from dbo.distance;
     
    iddistance  ArretInitial ArretFinal distance
    ----------- ------------ ---------- --------
     
    (0 row(s) affected)
     
    insert into dbo.station (station, nbr) values ('Y', 50);
    (11 row(s) affected)
    (1 row(s) affected)
     
    select * from dbo.station;
     
    idstation   station nbr
    ----------- ------- -----------
    1           F       12
    2           R       15
    3           J       2
    4           S       8
    5           H       5
    6           Y       50
     
    (6 row(s) affected)
     
    select * from dbo.distance;
     
    iddistance  ArretInitial ArretFinal distance
    ----------- ------------ ---------- --------
    1           Y            Y          0.00
    2           Y            F          0.00
    3           Y            H          0.00
    4           Y            J          0.00
    5           Y            R          0.00
    6           Y            S          0.00
    7           F            Y          0.00
    8           H            Y          0.00
    9           J            Y          0.00
    10          R            Y          0.00
    11          S            Y          0.00
     
    (11 row(s) affected)

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2012
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Problème résolu
    Merciiii beaucoup Waldar le code ça marche parfaitement


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

Discussions similaires

  1. Requête d'insertion dans une base ACCESS
    Par kurul1 dans le forum C++Builder
    Réponses: 5
    Dernier message: 02/11/2006, 17h41
  2. [C#] pb de requête d'insertion
    Par leycho dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/04/2006, 10h07
  3. [Requête] Problème INSERT INTO
    Par lerico dans le forum Requêtes et SQL.
    Réponses: 22
    Dernier message: 10/01/2006, 17h12
  4. Optimisation d'une requête d'insertion
    Par fdraven dans le forum Oracle
    Réponses: 15
    Dernier message: 01/12/2005, 14h00
  5. Requête d'insertion multiple avec 1 valeur fixe
    Par [DreaMs] dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/12/2005, 09h28

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