J'ai 2 tableaux je vous donne le DDL pour copier en SQL Server et avoir de chances de m'aider pour realiser un calcul entre 2 colonnes des 2 tableaux differents:

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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
 
CREATE TABLE TipuriAutomobile
(IdTip int PRIMARY KEY NOT NULL,
IdMasina int,
TipAutomobil varchar(255),
CapacitateMotor varchar(255),
CapacitateTransport varchar(255),
TipCombustibil varchar(255),
NormaL100KM decimal(3,2) -- 3 zecimale in total , 2 zecimale dupa virgula
)
 
 
CREATE TABLE FoaieParcursMasina
(IdFoaie int PRIMARY KEY NOT NULL,
DataFoaieParcurs datetime,
IdMasina int,
NumarMasina varchar(255),
DataOraPlecare datetime,
DataOraSosire datetime,
NumeSofer varchar(255),
LocalitatePlecare varchar(255),
LocalitateSosire varchar(255),
KM int,
CombustibilConsumat int, --combustibil consumat =km*normaL100km
MotivDeplasare varchar(255),
MarfaTransportata varchar(255),
Utilizator varchar(255)
)
 
 
 
-- then we insert lines in both tables
 
INSERT INTO TipuriAutomobile& #40;IdTip,IdMasina,TipAutomobil,CapacitateMotor,CapacitateTransport,TipCombustib
il,NormaL100KM)
VALUES(1,1,'auto-cisterna','340kw','9000kg','motorina',8.93);
 
INSERT INTO TipuriAutomobile& #40;IdTip,IdMasina,TipAutomobil,CapacitateMotor,CapacitateTransport,TipCombustib
il,NormaL100KM)
VALUES(2,2,'camion','320kw','7000kg','benzina',9.09);
 
INSERT INTO TipuriAutomobile& #40;IdTip,IdMasina,TipAutomobil,CapacitateMotor,CapacitateTransport,TipCombustib
il,NormaL100KM)
VALUES(3,3,'auto-utilitara','300kw','8500kg','GPL',9.59);
 
INSERT INTO TipuriAutomobile& #40;IdTip,IdMasina,TipAutomobil,CapacitateMotor,CapacitateTransport,TipCombustib
il,NormaL100KM)
VALUES(4,4,'basculanta','290kw','5500kg','benzina',8.83);
 
 
 
 
INSERT INTO FoaieParcursMasina& #40;IdFoaie,DataFoaieParcurs,IdMasina,NumarMasina,DataOraPlecare,DataOraSosire,N
 umeSofer,LocalitatePlecare,LocalitateSosire,KM,MotivDeplasare,MarfaTransportata,
Utilizator)
VALUES(001,'060207 ',1,'DB-20-RTS','020207 9:32:35','020207 11:20:32','Popescu George','Targoviste','Bucuresti',110,'transport marfa','ciment','Materiale Constructii Bucuresti ');
 
 
INSERT INTO FoaieParcursMasina& #40;IdFoaie,DataFoaieParcurs,IdMasina,NumarMasina,DataOraPlecare,DataOraSosire,N
 umeSofer,LocalitatePlecare,LocalitateSosire,KM,MotivDeplasare,MarfaTransportata,
Utilizator)
VALUES(002,'090407 ',2,'DB-20-RTS','040407 9:21:20','040407 11:51:42','Popescu George','Targoviste','Medgidia',140,'transport marfa','ciment','Cimentul Medgidia');
 
INSERT INTO FoaieParcursMasina& #40;IdFoaie,DataFoaieParcurs,IdMasina,NumarMasina,DataOraPlecare,DataOraSosire,N
 umeSofer,LocalitatePlecare,LocalitateSosire,KM,MotivDeplasare,MarfaTransportata,
Utilizator)
VALUES(003,'120807 ',3,'DB-02-SPR','040807 9:21:20','040807 11:51:42','Popescu Cosmin','Targoviste','Bucuresti',110,'transport marfa','fier beton','Materiale Constructii Bucuresti ');
 
INSERT INTO FoaieParcursMasina& #40;IdFoaie,DataFoaieParcurs,IdMasina,NumarMasina,DataOraPlecare,DataOraSosire,N
 umeSofer,LocalitatePlecare,LocalitateSosire,KM,MotivDeplasare,MarfaTransportata,
Utilizator)
VALUES(004,'130807 ',4,'DB-02-SPR','060807 9:21:20','060807 11:51:42','Georgescu Ionel','Targoviste','Bucuresti',110,'transport marfa','fier beton','Materiale Constructii Bucuresti ');
 
INSERT INTO FoaieParcursMasina& #40;IdFoaie,DataFoaieParcurs,IdMasina,NumarMasina,DataOraPlecare,DataOraSosire,N
 umeSofer,LocalitatePlecare,LocalitateSosire,KM,MotivDeplasare,MarfaTransportata,
Utilizator)
VALUES(005,'150807 ',5,'DB-02-SPR','070807 10:30:20','070807 12:51:42','Ionascu Paul','Targoviste','Bucuresti',110,'transport marfa','fier beton','Materiale Constructii Bucuresti ');
 
 
INSERT INTO FoaieParcursMasina& #40;IdFoaie,DataFoaieParcurs,IdMasina,NumarMasina,DataOraPlecare,DataOraSosire,N
 umeSofer,LocalitatePlecare,LocalitateSosire,KM,MotivDeplasare,MarfaTransportata,
Utilizator)
VALUES(006,'180807 ',6,'DB-03-STR','110807 10:30:20','110807 12:51:42','Ion Paul','Targoviste','Medgidia',140,'transport marfa','ciment','Cimentul Medgidia');
 
INSERT INTO FoaieParcursMasina& #40;IdFoaie,DataFoaieParcurs,IdMasina,NumarMasina,DataOraPlecare,DataOraSosire,N
 umeSofer,LocalitatePlecare,LocalitateSosire,KM,MotivDeplasare,MarfaTransportata,
Utilizator)
VALUES(007,'180807 ',7,'GL-08-FIT','130807 10:30:20','130807 12:51:42','Pricop George','Targoviste','Medgidia',140,'transport marfa','ciment','Cimentul Medgidia');
 
INSERT INTO FoaieParcursMasina& #40;IdFoaie,DataFoaieParcurs,IdMasina,NumarMasina,DataOraPlecare,DataOraSosire,N
 umeSofer,LocalitatePlecare,LocalitateSosire,KM,MotivDeplasare,MarfaTransportata,
Utilizator)
VALUES(008,'200807 ',8,'GL-08-FIT','140807 10:30:20','140807 12:51:42','Pricop Cristian','Targoviste','Medgidia',140,'transport marfa','ciment','Cimentul Medgidia');
 
 
INSERT INTO FoaieParcursMasina& #40;IdFoaie,DataFoaieParcurs,IdMasina,NumarMasina,DataOraPlecare,DataOraSosire,N
 umeSofer,LocalitatePlecare,LocalitateSosire,KM,MotivDeplasare,MarfaTransportata,
Utilizator)
VALUES(009,'250807 ',9,'GL-24-CAR','170807 10:30:20','170807 12:51:42','Enache Florin','Targoviste','Medgidia',140,'transport marfa','ciment','Cimentul Medgidia');
 
 
INSERT INTO FoaieParcursMasina& #40;IdFoaie,DataFoaieParcurs,IdMasina,NumarMasina,DataOraPlecare,DataOraSosire,N
 umeSofer,LocalitatePlecare,LocalitateSosire,KM,MotivDeplasare,MarfaTransportata,
Utilizator)
VALUES(010,'250807 ',10,'GL-24-CAR','170807 10:30:20','170807 12:51:42','Mihai Paul','Targoviste','Medgidia',140,'transport marfa','ciment','Cimentul Medgidia');
 
-- tabela 4 DatePtFoiParcurs adaugare inreg la completare formular
 
INSERT INTO FoaieParcursMasina& #40;IdFoaie,DataFoaieParcurs,IdMasina,NumarMasina,DataOraPlecare,DataOraSosire,N
 umeSofer,LocalitatePlecare,LocalitateSosire,KM,MotivDeplasare,MarfaTransportata,
Utilizator)
VALUES(011,'20070825',11,'GL-24-CAR','20070807 10:30:20','20070817 12:51:42','Mihai Paul','Targoviste','Medgidia',140,'transport marfa','ciment','Cimentul Medgidia');
 
 
SELECT * FROM TipuriAutomobile
 
SELECT * FROM FoaieParcursMasina
Comme vous observez dans tableau FoaieParcursMasina le champ (la colonne) CombustibilConsumat n'a pas des valeurs parce que je ne voulais pas inserer avec INSERT INTO dans cette colonne.

Mon souci c'est que je veux faire un calcul dans la colonne CombustibilConsumat.

CombustibilConsumat=NormaL100KM*KM

ou NormaL100KM est une colonne du tableau TipuriAutomobile et KM est une colonne du tableau FoaieParcursMasina.

Je veux faire pour chaque ligne le calcul NormaL100KM*KM est qu'on complete les valeurs automatiquement dans le champ CombustibilConsumat du tableau nomme FoaieParcursMasina.

Est-il possible de faire ce calcul dans un SELECT (une requete)?

Si oui comment faire?

Pour chaque type d'automobil (c'est TipAutomobil champ dans le tableau nomme TipuriAutomobile avec mes notations) , j'ai une cantitte d'essence ou de combustible consomme specifie par une valeur dans le champ NormaL100KM.

Je veux faire le calcul NormaL100KM*km pour chaque valeur est stoquer le resultat automatiquement dans la colonne CombustibilConsumat.

Ayant tout ca pris en compte j'ai l'impression que je dois avoir aussi le champ TipAutomobil(pour le type automobile parce que chaque automobile a une norme du consomme du combustible represente par NormaL100KM champ) et je crois que je dois mettre la colonne TipAutomobil aussi dans le tableau FoaieParcursMasina.

J'attends votre avis svp! Je ne suis pas sur que c'est ca pour pouvoir faire le calcul entre les 2 colonnes (NormaL100KM *KM et stoquer automatiquement le resultat dans la colonne CombustibilConsumat qui represente le consomme du combustible.)

Le probleme de comprendre ce que je dois faire je l'ai fais mais j'ai des problemes en implementant ca dans sql server.

J'ai essaye de faire dans un select le calcul comme ca:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
SELECT tab1.NormaL100KM *tab2.KM AS Calcul
FROM TipuriAutomobile tab1
left join FoaieParcursMasina tab2 on tab1.IdMasina = tab2.IdMasina
Mais le resultat alias nomme Calcul je veux qu'il soit complete dans la colonne CombustibilConsumat ou je n'ai pas des valeurs (la colonne CombustibilConsumat a tous les lignes NULL ).

Est on complete cette colonne avec le calcul au dessus mais je ne sais pas comment.

Ca fait bien le calcul je dois avoir 11 lignes dans TipuriAutomobile comme dans FoaieParcursMasina?

Je veux que le resultat soit performe dans la colonne CombustibilConsumat du tableau FoaieParcursMasina et que je vois puis les resultat dans cette colonne quand je fais pour la deuxieme fois:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
SELECT * FROM FoaieParcursMasina