Bonjour a tous!

J'ai 3 tableaux voila le DDL:

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
 
CREATE DATABASE ParcAuto
 
CREATE TABLE PatrimoniuMasini
(
IdMasina int PRIMARY KEY NOT NULL IDENTITY(1,1),
NumarMasina varchar(255) UNIQUE,
PersoanaFolMasina varchar(255),
Utilizator varchar(255)
)
 
 
-- utilizator e firma careia ii apartine automobilul sau l-a inchiriat
 
-- tabela2 TipuriAutomobile
 
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
)
 
 
 
-- un numar de masina poate face mai multe drumuri
 
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)
)
Les lignes sont inserees avec INSERT INTO.

Consigne requete:

Je veux lister la moyenne du combustible(AVG(CombustibilConsumat) ) consomme d'une periode(la periode est represente par 2 colonnes DataOraSosire et DataOraPlecare) groupes par types d'automobiles (c'est IdTip) et type du combustible (colonne TipCombustibil)

Je veux la moyenne du combustibleconsomme donc AVG sur la colonne nomme CombustibilConsumat .(GROUP BY IdTip et TipCombustibil).


J'ai essaye comme ca:

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
 
SELECT tab1.DataOraPlecare,tab1.DataOraSosire,tab2.IdTip,tab2.TipCombustibil,
x.MoyenneCombustible
FROM FoaieParcursMasina tab1
GROUP BY tab1.DataOraPlecare,tab1.DataOraSosire
 
left join
	(	SELECT IdMasina,AVG(CombustibilConsumat) As MoyenneCombustible
		FROM FoaieParcursMasina
		GROUP BY IdMasina
	)	x on x.IdMasina = tab1.IdMasina
 
left join TipuriAutomobile tab2 on tab1.IdMasina = tab2.IdMasina
 
-- idtip unic ok, tipcombustibil unic ok, media pe fiecare tip combustibil??
 
-- je veux la moyenne du combustible d'une periode la periode est represente par les champs DataOraPlecare et DataOraSosire
WHERE DataOraPlecare >'1/1/2005' AND DataOraPlecare<'12/12/2009' AND DataOraSosire  >'1/1/2005'  AND DataOraSosire<'12/12/2009' 
GROUP BY tab2.IdTip,tab2.TipCombustibil

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
Msg 156, Level 15, State 1, Line 7
Incorrect syntax near the keyword 'left'.
Msg 102, Level 15, State 1, Line 11
Incorrect syntax near 'x'.
tab1 - alias pour table FoaieParcursMasina

tab2- alias pour table TipuriAutomobile.

TipAutomobil -colonne qui represente le nom du type d'automobile.

IdTip - cle primaire qui identifie uniquement table TipuriAutomobile.

IdFoaie- cle primaire table FoaieParcursMasina

CombustibilConsumat - colonne qui represente la valeur du combustible consomme.