Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/03/2011, 17h41   #1
Invité de passage
 
Inscription : avril 2008
Messages : 65
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 65
Points : 3
Points : 3
Par défaut problème dans une requête INSERT

Bonjour,

j'ai un soucie dans ma SP je veux insérer la différence de deux lignes entre deux tables dans une autre table.
mais à chaque fois il m'insère la même valeur.

merci d'avance pour votre aide

voici le code:


Code :
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
54
55
56
57
58
59
60
61
62
63
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
 
ALTER PROCEDURE essaie
AS
BEGIN
DELETE FROM table_4
 
 
 
declare @V1 AS int
SELECT @V1 = (A.valeur - B.valeur) FROM Table_1 A JOIN table_2 B ON A.Id1 = B.Id1 WHERE A.origine = 'xx'
 
 
 
INSERT INTO table_4 
(
id3,
id2,
Valeur,
origine
)
 
SELECT 
       A.id1
      ,B.id2
      ,@V1
      ,'sam'
 
FROM  table_1 A JOIN table_2 B ON A.id1 = B.id1
 
 
--===============
declare @V2 AS int
SELECT @V2 = AVG(Valeur) FROM Table_4 WHERE origine = 'sam'
 
 
 
INSERT INTO table_4 
(
id3,
id2,
Valeur,
origine
)
 
     VALUES ( 
       7
      ,8
      ,@V2
      ,'S_Sam')
 
 
 
END
GO
xavier81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2011, 11h37   #2
Membre éprouvé
 
Homme Hamid MIRA
Ingénieur développement logiciels
Inscription : septembre 2003
Messages : 177
Détails du profil
Informations personnelles :
Nom : Homme Hamid MIRA
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2003
Messages : 177
Points : 413
Points : 413
Pour pouvoir t'aider, et vérifier tes requêtes, il faut que tu nous fournisses, le vrai script de création des 3 tables Table_1, Table_2 et Table_4, intégrant, pour chacune, la définition des clé primaire, et des liens de clés étrangères (FK) entre ces tables, etc.
Le résultat que tu décrits :
Citation:
..chaque fois il m'insère la même valeur..
ne me surprends guère. En effet, dans l'instruction :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
INSERT INTO table_4
(
id3,
id2,
Valeur,
origine
)
SELECT
A.id1
,B.id2
,@V1
,'sam'
FROM table_1 A 
JOIN table_2 B 
ON A.id1 = B.id1
la variable @V1 est considérée comme une constante et donc sa valeur est propagée dans table_4 pour tous les enregistrements obtenues par jointure entre Table_1 et Table_2 !!!!
Comme je l'ai indiqué, ton message manque de précision, et au peu d'information dont on dispose, ta requête devrait peut-être ressembler à ceci

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
INSERT INTO table_4
(
id3,
id2,
Valeur,
origine
)
SELECT
A.id1
,B.id2
-- ,@V1  -- ligne mise en commentaire 
(A.valeur - B.valeur) -- ligne de remplacement       
,'sam'
FROM table_1 A 
INNER JOIN table_2 B  -- Ajout mot inner          
ON A.id1 = B.id1
WHERE A.origine = 'xx'  -- nouvelle ligne ajoutée
A+
hmira est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h30.


 
 
 
 
Partenaires

Hébergement Web