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 :

Produit des 2 colonnes


Sujet :

MS SQL Server

  1. #1
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut Produit des 2 colonnes
    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

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 454
    Par défaut
    Je ne suis pas certain d'avoir tout compris, mais je crois que vous voulez faire ceci :
    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
    UPDATE FPM
    SET FPM.CombustibilConsumat = TPA.NormaL100KM * FPM.KM
    FROM
        dbo.FoaieParcursMasina AS FPM
        INNER JOIN dbo.TipuriAutomobile AS TPA
          ON TPA.IdMasina = FPM.IdMasina;
     
    SELECT * FROM dbo.FoaieParcursMasina;
     
    1	2006-02-07 00:00:00.000	1	DB-20-RTS	2002-02-07 09:32:35.000	2002-02-07 11:20:32.000	Popescu George	Targoviste	Bucuresti	110	982	transport marfa	ciment		Materiale Constructii Bucuresti 
    2	2009-04-07 00:00:00.000	2	DB-20-RTS	2004-04-07 09:21:20.000	2004-04-07 11:51:42.000	Popescu George	Targoviste	Medgidia	140	1272	transport marfa	ciment		Cimentul Medgidia
    3	2012-08-07 00:00:00.000	3	DB-02-SPR	2004-08-07 09:21:20.000	2004-08-07 11:51:42.000	Popescu Cosmin	Targoviste	Bucuresti	110	1054	transport marfa	fier beton	Materiale Constructii Bucuresti 
    4	2013-08-07 00:00:00.000	4	DB-02-SPR	2006-08-07 09:21:20.000	2006-08-07 11:51:42.000	Georgescu Ionel	Targoviste	Bucuresti	110	971	transport marfa	fier beton	Materiale Constructii Bucuresti 
    5	2015-08-07 00:00:00.000	5	DB-02-SPR	2007-08-07 10:30:20.000	2007-08-07 12:51:42.000	Ionascu Paul	Targoviste	Bucuresti	110	NULL	transport marfa	fier beton	Materiale Constructii Bucuresti 
    6	2018-08-07 00:00:00.000	6	DB-03-STR	2011-08-07 10:30:20.000	2011-08-07 12:51:42.000	Ion Paul	Targoviste	Medgidia	140	NULL	transport marfa	ciment		Cimentul Medgidia
    7	2018-08-07 00:00:00.000	7	GL-08-FIT	2013-08-07 10:30:20.000	2013-08-07 12:51:42.000	Pricop George	Targoviste	Medgidia	140	NULL	transport marfa	ciment		Cimentul Medgidia
    8	2020-08-07 00:00:00.000	8	GL-08-FIT	2014-08-07 10:30:20.000	2014-08-07 12:51:42.000	Pricop Cristian	Targoviste	Medgidia	140	NULL	transport marfa	ciment		Cimentul Medgidia
    9	2025-08-07 00:00:00.000	9	GL-24-CAR	2017-08-07 10:30:20.000	2017-08-07 12:51:42.000	Enache Florin	Targoviste	Medgidia	140	NULL	transport marfa	ciment		Cimentul Medgidia
    10	2025-08-07 00:00:00.000	10	GL-24-CAR	2017-08-07 10:30:20.000	2017-08-07 12:51:42.000	Mihai Paul	Targoviste	Medgidia	140	NULL	transport marfa	ciment		Cimentul Medgidia
    11	2007-08-25 00:00:00.000	11	GL-24-CAR	2007-08-07 10:30:20.000	2007-08-17 12:51:42.000	Mihai Paul	Targoviste	Medgidia	140	NULL	transport marfa	ciment		Cimentul Medgidia
    Si vous voulez un 0 à la place des NULL :
    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
    UPDATE FPM
    SET FPM.CombustibilConsumat = coalesce(TPA.NormaL100KM, 0) * FPM.KM
    FROM
        dbo.FoaieParcursMasina AS FPM
        LEFT OUTER JOIN dbo.TipuriAutomobile AS TPA
          ON TPA.IdMasina = FPM.IdMasina;
     
    SELECT * FROM dbo.FoaieParcursMasina;
     
    1	2006-02-07 00:00:00.000	1	DB-20-RTS	2002-02-07 09:32:35.000	2002-02-07 11:20:32.000	Popescu George	Targoviste	Bucuresti	110	982	transport marfa	ciment		Materiale Constructii Bucuresti 
    2	2009-04-07 00:00:00.000	2	DB-20-RTS	2004-04-07 09:21:20.000	2004-04-07 11:51:42.000	Popescu George	Targoviste	Medgidia	140	1272	transport marfa	ciment		Cimentul Medgidia
    3	2012-08-07 00:00:00.000	3	DB-02-SPR	2004-08-07 09:21:20.000	2004-08-07 11:51:42.000	Popescu Cosmin	Targoviste	Bucuresti	110	1054	transport marfa	fier beton	Materiale Constructii Bucuresti 
    4	2013-08-07 00:00:00.000	4	DB-02-SPR	2006-08-07 09:21:20.000	2006-08-07 11:51:42.000	Georgescu Ionel	Targoviste	Bucuresti	110	971	transport marfa	fier beton	Materiale Constructii Bucuresti 
    5	2015-08-07 00:00:00.000	5	DB-02-SPR	2007-08-07 10:30:20.000	2007-08-07 12:51:42.000	Ionascu Paul	Targoviste	Bucuresti	110	0	transport marfa	fier beton	Materiale Constructii Bucuresti 
    6	2018-08-07 00:00:00.000	6	DB-03-STR	2011-08-07 10:30:20.000	2011-08-07 12:51:42.000	Ion Paul	Targoviste	Medgidia	140	0	transport marfa	ciment		Cimentul Medgidia
    7	2018-08-07 00:00:00.000	7	GL-08-FIT	2013-08-07 10:30:20.000	2013-08-07 12:51:42.000	Pricop George	Targoviste	Medgidia	140	0	transport marfa	ciment		Cimentul Medgidia
    8	2020-08-07 00:00:00.000	8	GL-08-FIT	2014-08-07 10:30:20.000	2014-08-07 12:51:42.000	Pricop Cristian	Targoviste	Medgidia	140	0	transport marfa	ciment		Cimentul Medgidia
    9	2025-08-07 00:00:00.000	9	GL-24-CAR	2017-08-07 10:30:20.000	2017-08-07 12:51:42.000	Enache Florin	Targoviste	Medgidia	140	0	transport marfa	ciment		Cimentul Medgidia
    10	2025-08-07 00:00:00.000	10	GL-24-CAR	2017-08-07 10:30:20.000	2017-08-07 12:51:42.000	Mihai Paul	Targoviste	Medgidia	140	0	transport marfa	ciment		Cimentul Medgidia
    11	2007-08-25 00:00:00.000	11	GL-24-CAR	2007-08-07 10:30:20.000	2007-08-17 12:51:42.000	Mihai Paul	Targoviste	Medgidia	140	0	transport marfa	ciment		Cimentul Medgidia

  3. #3
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Salut Waldar!

    Milles merci pour l'aide!


    Mais malheuresement ce n'est pas exactement ca! Car le probleme est un peu complexe ! Le resultats obtenus par toi me conviennent mais le probleme est un peu complexe!

    Je vais essayer d'expliquer en detail ce que je veux aboutir!

    Si tu fais le query suivant: (regarde photo attache)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    SELECT tab1.NormaL100KM *tab2.KM AS Calcul
    FROM TipuriAutomobile tab1
    LEFT JOIN FoaieParcursMasina tab2 ON tab1.IdMasina = tab2.IdMasina
    tu obtiens dans la colonne calcul le resultat du produit des 2 colonnes KM*NormaL100KM.

    Voila le resultat de la requete (image attache)



    Le probleme qui me gene c'est que je veux le resultat de la colonne Calcul dans tous les valeurs NULL de la colonne CombustibilConsumat.

    Je vais donner des details car le probleme est complexe j'ai 4 jours que j'en galere ca!

    Bon maintenant je vais te donner des details:

    J'ai parfaitement entendu ce que je dois faire mais je ne sais pas malheuresement implementer en sql server. Si tu as des questions n'hesite pas me poser pour te donner des details.


    Mais le probleme est que j'ai 11 lignes dans table FoaieParcursMasina (11 lignes pour KM colonne et 11 lignes pour colonne CombustibilConsumat).

    Mon souci est le suivant:

    Chaque type de voiture (colonne TipAutomobil dans TipuriAutomobile) a une norme de consommation du combustible (essence, diesel) represente par les valeurs contenu dans la colonne NormaL100KM.

    Le probleme est que j'ai seulement 4 valeurs pour NormaL100KM.

    Donc mon idee c'est d'ajouter la colonne TipAutomobil aussi dans table FoaieParcursMasina et qu'il sait automatiquement quelle norme (valeur de consommation pour type d'automobile =colonne TipAutomobile pour attribuer et faire le calcul.).

    Colonne Combustibil Consumat a 11 lignes qui doivent etre completes, colonne KM 11 valeurs (lignes ) mais NormaL100KM a seulement 4 valeurs.

    Je dois lui dire d'attribuer la norme pour type d'automobile donc l'idee serait d'ajouter la colonne TipAutomobil dans FoaieParcursMasina et pour chaque type qu'il sait automatiquement la valeur.

    Puis pratiquement il sait completer tous les 11 valeurs de la colonne CombustibilConsumat.

    Merci beacoup pour ton reponse ca m'aides beacoup mais le probleme n'est pas si simple en esperant etre plus precis maintenant.

    En esperant etre plus clair maintenant le probleme est assez complexe!

    Si vous avez besoin des DDL de tables TipuriAutomobile et FoaieParcursMasina:

    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
    118
     
     
    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
    Amicalment,

    Michel
    Images attachées Images attachées  

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 454
    Par défaut
    D'accord, mais effectivement pour le moment il n'y a pas de jointure possible entre les types automobiles de vos deux tables.

    Il faudrait bien qu'on retrouve la colonne IdTip en clef étrangère dans FoaieParcursMasina. Une fois que ce sera fait il faudra faire la jointure sur l'IdTip.

    Par contre je ne sais pas à quoi correspond l'IdMasina ?
    A priori ce n'est pas une clef de jointure, je ne suis pas sûr que cette information soit utile.

  5. #5
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Citation Envoyé par Waldar Voir le message
    D'accord, mais effectivement pour le moment il n'y a pas de jointure possible entre les types automobiles de vos deux tables.

    Il faudrait bien qu'on retrouve la colonne IdTip en clef étrangère dans FoaieParcursMasina. Une fois que ce sera fait il faudra faire la jointure sur l'IdTip.

    Par contre je ne sais pas à quoi correspond l'IdMasina ?
    A priori ce n'est pas une clef de jointure, je ne suis pas sûr que cette information soit utile.
    IdMasina c'est la cle primaire du table PatrimoniuMasini car en fait j'ai 3 tables - table qui couvrent les voitures d'une societe(colonne utilizator est le nom de la societe).

    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
     
    CREATE TABLE PatrimoniuMasini
    (
    IdMasina int PRIMARY KEY NOT NULL IDENTITY(1,1),
    NumarMasina varchar(255) UNIQUE,
    PersoanaFolMasina varchar(255),
    Utilizator varchar(255)
    )
     
     
    INSERT INTO PatrimoniuMasini(NumarMasina,PersoanaFolMasina,Utilizator)
    VALUES ('DB-20-RTS','Popescu George','Cimentul Fieni');
     
    INSERT INTO PatrimoniuMasini(NumarMasina,PersoanaFolMasina,Utilizator)
    VALUES ('DB-03-STR','Popescu Cosmin','Cimentul Fieni');
     
    INSERT INTO PatrimoniuMasini(NumarMasina,PersoanaFolMasina,Utilizator)
    VALUES ('DB-02-SPR','Georgescu Ionel','Cimentul Fieni');
     
    INSERT INTO PatrimoniuMasini(NumarMasina,PersoanaFolMasina,Utilizator)
    VALUES ('CJ-02-MIH','Ionascu Paul','SC Materiale Constructii Cluj');
     
    INSERT INTO PatrimoniuMasini(NumarMasina,PersoanaFolMasina,Utilizator)
    VALUES ('CJ-06-ION','Ion Paul','SC Materiale Constructii Cluj');
     
    INSERT INTO PatrimoniuMasini(NumarMasina,PersoanaFolMasina,Utilizator)
    VALUES ('CJ-05-TIZ','Pricop George','SC Materiale Constructii Cluj');
     
    INSERT INTO PatrimoniuMasini(NumarMasina,PersoanaFolMasina,Utilizator)
    VALUES ('GL-08-FIT','Pricop Cristian','SC Materiale Constructii Galati');
     
    INSERT INTO PatrimoniuMasini(NumarMasina,PersoanaFolMasina,Utilizator)
    VALUES ('GL-28-TIO','Enache Florin','SC Materiale Constructii Galati');
     
    INSERT INTO PatrimoniuMasini(NumarMasina,PersoanaFolMasina,Utilizator)
    VALUES ('GL-24-CAR','Enache Cosmin','SC Materiale Constructii Galati');
     
    INSERT INTO PatrimoniuMasini(NumarMasina,PersoanaFolMasina,Utilizator)
    VALUES ('GL-19-RAC','Mihai Paul','SC Materiale Constructii Galati');

    Ok. Si j'ai bien compris je dois ajouter la colonne IdTip aussi dans table FoaieParcursMasina.

    Ok mais dans ce cas comment puis-je faire ca j'ai 4 lignes dans NormaL100KM.

    Quoi dois-je modifier?
    J'ai attache aussi le tableau PatrimoniuMasini c'est ma structure complete de ma base des donnees qui couvrent 3 tables. (PatrimoniuMasini,TipuriAutomobile(types auto),FoaieParcursMasina(feuille parcours pour les voitures pour transporter quelque chose).

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 454
    Par défaut
    Dans ce cas Id_Tip est plutôt un attribut de PatrimoniuMasini.

    C'est à vous d'affecter un type de consommation par véhicule, ça je ne peux pas l'inventer pour vous !

  7. #7
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Dans ce cas Id_Tip est plutôt un attribut de PatrimoniuMasini.

    C'est à vous d'affecter un type de consommation par véhicule, ça je ne peux pas l'inventer pour vous !
    Oui.

    Mais j'y pense d'ajouter la colonne TipAutomobile(pour le types d'automobile ) dans le tableau FoaieParcursMasina car on a 4 types d'automobiles dans table TipuriAutomobile et chaque type a une norme de consommation(essence,diesel) unique.

    Et le combustible consomme donc CombustibilConsumat colonne = KM*NormaL100KM (km parcouru par l'automobil * la norme de l'essence consomme a 100km).

    Donc je crois que les 4 types d'automobiles devrait etre dans le tableau FoaieParcursMasina. (le probleme et comment savoir quand il fait le calcul KM*Norme a quel type de voiture on fais reference.

    Car on a 4 types voitures, 4 normes et 11 valeurs pour les colonnes KM et 11 valeurs pour les resultats dans la colonne CombustibilConsumat.

    L'idee c'est d'ajouter la colonne TipAutomobil dans table FoaieParcursMasina.

    Mon probleme est si j'ajout les 4 valeurs dans la colonne TipAutomobil aussi dans table FoaieParcursMasina comment il sait d'attribuer les 4 valeurs pour chaque ligne(chaque ligne va avoir un type d'automobile car je lui specifie dans chaque 11 lignes un des 4 types d'automobiles). Comment si j'ai un des types il sache d'associer la norme?

    Pour faire la multiplication avec le nombre des KM parcourus selon le type de voiture (car chaque type de voiture a une norme unique de consomation d'essence).

    Je peux avoir dans 11 lignes 4 automobiles types1 (auto-cisterna) ->lignes contenues dans TipAutomobil champ du table TipuriAutomobile. type2(basculanta) etc.

    Le phenomene je m'y explique comme tu vois mais je ne sais pas comment faire ca en sql server c'est pour cela que j'ai ouvert le nouveau message.

    Si j'ajoute la colonne TipAutomobil je crois qu'il sait associer la norme du consomme car la colonne TipAutomobil a ecrit comme ligne le type d'automobile.

    Et j'y pense en partant de la requete de modifier comme cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    UPDATE FPM
    SET FPM.CombustibilConsumat = TPA.NormaL100KM * FPM.KM
    FROM
        dbo.FoaieParcursMasina AS FPM
        INNER JOIN dbo.TipuriAutomobile AS TPA
          ON TPA.IdMasina = FPM.IdMasina AND TPA.TipAutomobil=FPM.TipAutomobil;
    Je ne sais pas si j'ai bien compris le probleme (mais je crois que la colonne TipAutomobil doit etre aussi situe dans FoaieParcursMasina pas seulement en TipuriAutomobile).

    Donc le contenu de la colonne TipAutomobil est identique dans les 2 tables (TipuriAutomobile et FoaieParcursMasina).

    J'attends ton reponse!

  8. #8
    Membre éclairé
    Avatar de witch
    Inscrit en
    Mai 2007
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2007
    Messages : 346
    Par défaut
    Bonjour,

    Je n'ai pas trop compris le problème, mais en essayant, de deviner je crois qu'il te faut une troisième table TypeAuto qui contiendra par exemple deux champs Id_Tip et norme qui contient comme valeur par exemple (essence/disesel)
    bien sûre la colonne Id_Tip doit migrer vers la table FoaieParcursMasina pour permettre une jointure entre ces deux tables, pour la suite ...
    il me semble que tu as déjà un ptit problème de conception, souvent ça complique les choses après, même si on a envie de faire que des requêtes simples!

  9. #9
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Bonjour,

    Je n'ai pas trop compris le problème, mais en essayant, de deviner je crois qu'il te faut une troisième table TypeAuto qui contiendra par exemple deux champs Id_Tip et norme qui contient comme valeur par exemple (essence/disesel)
    Salut! J'ai deja 3 tables PatrimoniuMasini,TipuriAutomobile et FoaieParcursMasina j'ai donne la structure DDL pour la creation de mes tableaux.

    J'ai deja type d'automobile(TipAutomobil colonne dans table TipuriAutomobile , idtype(c'est colonne IdTip dans table TipuriAutomobile) et la norme du combustible (colonne NormeL100KM table TipuriAutomobile).Donc je ne dois pas creer une autre table.

    Je dois lier FoaieParcursMasina et TipuriAutomobile.

    Pour qu'il sait quelle type de voiture j'ai il suffit d'ajouter colonne IdTip aussi dans table FoaieParcursMasina et de modifier la requete comme ca pour savoir automatiquement de calculer la norme pour chaque type d'automobile:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    UPDATE FPM
    SET FPM.CombustibilConsumat = TPA.NormaL100KM * FPM.KM
    FROM
        dbo.FoaieParcursMasina AS FPM
        INNER JOIN dbo.TipuriAutomobile AS TPA
          ON TPA.IdMasina = FPM.IdMasina AND TPA.IdTip=FPM.IdTip;
    Ca veut dire ajouter la colonne IdTip dans table FoaieParcursMasina et IdTip on a aussi dans TipuriAutomobile(types automobiles IdTip c'est la cle primaire du tableau TipuriAutomobile).

    J'espere maintenant que c'est bien la requete comme je veux! Et maintenant j'espere qu'il reconnait la norme automatiquement par type d'automobile (car on a mis la condition IdTip le nombre du type qui est unique et il sait multiplier la norme associe a un des 4 idtip avec le nombre des kilometres colonne KM).


    J'attends votre reponses!

  10. #10
    Membre éclairé
    Avatar de witch
    Inscrit en
    Mai 2007
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2007
    Messages : 346
    Par défaut
    Salut,

    c'est bien que tu utilises la table TipuriAutomobile, mais tu ne crois pas que ça a besoin d'autre attributs peut être l'attribut norme, et le prix....?

    J'espere maintenant que c'est bien la requete comme je veux! Et maintenant j'espere qu'il reconnait la norme automatiquement par type d'automobile (car on a mis la condition IdTip le nombre du type qui est unique et il sait multiplier la norme associe a un des 4 idtip avec le nombre des kilometres colonne KM).
    enfait je ne comprends toujours pas clairement ton problème...

  11. #11
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Merci witch que tu veux m'aider. Probablement c'est ma faute je n'explique tres bien le probleme.

    Donc.

    J'ai une colonne nomme CombustibilConsumat dans table FoaieParcursMasina.

    Je n'ai fais pas insert into dans cette colonne donc tous les 11 valeurs sont NULL.

    J'ai 4 types d'autos =colonne TipAutomobil table TipuriAutomobile(chaque auto a une norme unique du combustible colonne NormaL100KM table TipuriAutomobile).

    Le noms de mes 4 types sont: auto-cisterna,camion,auto-utilitara et basculanta. Chaque type d'auto est identifie par la cle primaire du tableau TipuriAutomobile qui est la colonne IdTip.

    Ce que je desire c'est calculer le combustible consomme (completer la colonne CombustibilConsomme ).

    Puis le combustible consomme par un automobile donc CombustibilConsumat colonne = nombre_de_km(KM colonne table FoaieParcursMasina)*norme_du_combustible consomme(NormaL100KM du tableau TipuriAutomobile).

    La norme est une valeur decimale a chaque 100 KM parcourus.

    Mon souci c'est que dans la table TipuriAutomobile j'ai 4 types d'automobiles (idtip=1...4 et les noms de types d'automobiles sont representes par la colonne TipAutomobil ( j'ai 4 noms des types: auto-cisterna,camion, auto-utilitara, basculanta) ).

    Chaque type a une norme de consomme.

    Mon souci c'est que je veux faire le calcul dans la colonne CombustibilConsumat=KM*NormeL100KM

    Mais CombustibilConsumat a 11 lignes dans table FoaieParcursMasina.

    KM aussi 11 lignes il se trouve aussi dans table FoaieParcursMasina.

    Et NormeL100KM a seulement 4 lignes.

    Donc je crois que je dois ajouter seulement la colonne IdTip dans FoaieParcursMasina et il reconnait automatiquement la norme du consomme par IdTip et je peux faire le calcul:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    UPDATE FPM
    SET FPM.CombustibilConsumat = TPA.NormaL100KM * FPM.KM
    FROM
        dbo.FoaieParcursMasina AS FPM
        INNER JOIN dbo.TipuriAutomobile AS TPA
          ON TPA.IdMasina = FPM.IdMasina AND TPA.IdTip=FPM.IdTip
    Je demande si ca est correcte ayant pris en compte tout ca et si j'ajoute la colonne IdTip en FoaieParcursMasina il reconnait la norme du consomme pour les 4 types d'automobiles pour savoir faire le calcul!

    J'ai 3 tables pour etre plus clair la structure des mes tables c'est bien faite! Voila le DDL de mes 3 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
    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
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
     
    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)
    )
     
     
    --unde DataInregistrarii este data inregistrarii foaie parcurs
     
    -- e reprezentata de campul DataFoaieParcurs
     
    -- utilizator in tabela FoaieParcursMasina e beneficiarul
    --caruia ii transportam marfa conform foii de parcurs
     
     
    -- Inserare inregistrari in cele 3 tabele
     
    -- in cheia IDENTITY nu se insereaza valori e numerotata automat
     
    -- utilizator -nume firma care a inchiriat masina
     
    -- inserare inregistrari in tabela 1
     
    INSERT INTO PatrimoniuMasini(NumarMasina,PersoanaFolMasina,Utilizator)
    VALUES ('DB-20-RTS','Popescu George','Cimentul Fieni');
     
    INSERT INTO PatrimoniuMasini(NumarMasina,PersoanaFolMasina,Utilizator)
    VALUES ('DB-03-STR','Popescu Cosmin','Cimentul Fieni');
     
    INSERT INTO PatrimoniuMasini(NumarMasina,PersoanaFolMasina,Utilizator)
    VALUES ('DB-02-SPR','Georgescu Ionel','Cimentul Fieni');
     
    INSERT INTO PatrimoniuMasini(NumarMasina,PersoanaFolMasina,Utilizator)
    VALUES ('CJ-02-MIH','Ionascu Paul','SC Materiale Constructii Cluj');
     
    INSERT INTO PatrimoniuMasini(NumarMasina,PersoanaFolMasina,Utilizator)
    VALUES ('CJ-06-ION','Ion Paul','SC Materiale Constructii Cluj');
     
    INSERT INTO PatrimoniuMasini(NumarMasina,PersoanaFolMasina,Utilizator)
    VALUES ('CJ-05-TIZ','Pricop George','SC Materiale Constructii Cluj');
     
    INSERT INTO PatrimoniuMasini(NumarMasina,PersoanaFolMasina,Utilizator)
    VALUES ('GL-08-FIT','Pricop Cristian','SC Materiale Constructii Galati');
     
    INSERT INTO PatrimoniuMasini(NumarMasina,PersoanaFolMasina,Utilizator)
    VALUES ('GL-28-TIO','Enache Florin','SC Materiale Constructii Galati');
     
    INSERT INTO PatrimoniuMasini(NumarMasina,PersoanaFolMasina,Utilizator)
    VALUES ('GL-24-CAR','Enache Cosmin','SC Materiale Constructii Galati');
     
    INSERT INTO PatrimoniuMasini(NumarMasina,PersoanaFolMasina,Utilizator)
    VALUES ('GL-19-RAC','Mihai Paul','SC Materiale Constructii Galati');
     
    -- inserare inregistrari in tabela2
     
     
    INSERT INTO TipuriAutomobile(IdTip,IdMasina,TipAutomobil,CapacitateMotor,CapacitateTransport,TipCombustibil,NormaL100KM)
    VALUES(1,1,'auto-cisterna','340kw','9000kg','motorina',8.93); 
     
    INSERT INTO TipuriAutomobile(IdTip,IdMasina,TipAutomobil,CapacitateMotor,CapacitateTransport,TipCombustibil,NormaL100KM)
    VALUES(2,2,'camion','320kw','7000kg','benzina',9.09); 
     
    INSERT INTO TipuriAutomobile(IdTip,IdMasina,TipAutomobil,CapacitateMotor,CapacitateTransport,TipCombustibil,NormaL100KM)
    VALUES(3,3,'auto-utilitara','300kw','8500kg','GPL',9.59); 
     
    INSERT INTO TipuriAutomobile(IdTip,IdMasina,TipAutomobil,CapacitateMotor,CapacitateTransport,TipCombustibil,NormaL100KM)
    VALUES(4,4,'basculanta','290kw','5500kg','benzina',8.83); 
     
     
    -- inserare inregistrari in tabela3
     
     
    -- Beneficiar este campul utilizator din tabela FoaieParcursMasina
     
    -- campul Combustibil consumat valori introduse prin calcul km*norma100km
     
    -- un sofer poate avea mai multe foi de parcurs intr-o luna
     
    --format datetime: an/luna/zi primele 2 cifre anul, urmatoarele 2 luna si 2 cifre zi
     
     
    INSERT INTO FoaieParcursMasina(IdFoaie,DataFoaieParcurs,IdMasina,NumarMasina,DataOraPlecare,DataOraSosire,NumeSofer,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(IdFoaie,DataFoaieParcurs,IdMasina,NumarMasina,DataOraPlecare,DataOraSosire,NumeSofer,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(IdFoaie,DataFoaieParcurs,IdMasina,NumarMasina,DataOraPlecare,DataOraSosire,NumeSofer,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(IdFoaie,DataFoaieParcurs,IdMasina,NumarMasina,DataOraPlecare,DataOraSosire,NumeSofer,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(IdFoaie,DataFoaieParcurs,IdMasina,NumarMasina,DataOraPlecare,DataOraSosire,NumeSofer,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(IdFoaie,DataFoaieParcurs,IdMasina,NumarMasina,DataOraPlecare,DataOraSosire,NumeSofer,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(IdFoaie,DataFoaieParcurs,IdMasina,NumarMasina,DataOraPlecare,DataOraSosire,NumeSofer,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(IdFoaie,DataFoaieParcurs,IdMasina,NumarMasina,DataOraPlecare,DataOraSosire,NumeSofer,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(IdFoaie,DataFoaieParcurs,IdMasina,NumarMasina,DataOraPlecare,DataOraSosire,NumeSofer,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(IdFoaie,DataFoaieParcurs,IdMasina,NumarMasina,DataOraPlecare,DataOraSosire,NumeSofer,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(IdFoaie,DataFoaieParcurs,IdMasina,NumarMasina,DataOraPlecare,DataOraSosire,NumeSofer,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');
     
    --Numar masina in tabela foaie parcurs masini
     
    SELECT * FROM PatrimoniuMasini
     
    SELECT * FROM TipuriAutomobile
     
     
    SELECT * FROM FoaieParcursMasina
    Je me demande si j'ajoute la colonne IdTip pour chacun de types d'automobiles care je peux mettre dans les 11 lignes de FoaieParcursMasina le nombre correspondant de l'id: 1,2,3,4,2,2,3,1 .....

    Et je me demande si il sait associer la norme a pour chaque id( 4 types d'autos idtip peut etre 1,2,3 ou 4) pour faire le calcul que je desire.

    Ce que je veux c'est automatiquement completer la colonne CombustibilConsumat dans table FoaieParcursMasina en faisant le calcul KM*NormaL100KM (km*norme_a_100KM). Le probleme est que j'ai seulement 4 types d'autos et il doit associer la norme pour chaque type d'auto en faisant le calcul.

    C'est pour cela que je disais que je veux ajouter la colonne IdTip dans table FoaieParcursMasina.

  12. #12
    Membre éclairé
    Avatar de witch
    Inscrit en
    Mai 2007
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2007
    Messages : 346
    Par défaut
    Salut,

    Je demande si ca est correcte ayant pris en compte tout ca et si j'ajoute la colonne IdTip en FoaieParcursMasina il reconnait la norme du consomme pour les 4 types d'automobiles pour savoir faire le calcul!
    Oui c'est correct.
    Et je me demande si il sait associer la norme a pour chaque id( 4 types d'autos idtip peut etre 1,2,3 ou 4) pour faire le calcul que je desire.
    Oui il faut absolument ajouter une colonne IdTipe dans la table FoaieParcursMasina, pour que tu puisses les joindre.
    la relation entre FoaieParcursMasina et TipuriAutomobile est de 1.1==0.n respectivement...donc la clé IdTipe va migrer vers la table FoaieParcursMasina.
    Et je me demande si il sait associer la norme a pour chaque id( 4 types d'autos idtip peut etre 1,2,3 ou 4) pour faire le calcul que je desire.
    c'est toi qui doit mettre l'IdTipe qui correspond à chaque ligne de la table FoaieParcursMasina.
    C'est pour cela que je disais que je veux ajouter la colonne IdTip dans table FoaieParcursMasina.
    Oui tu n'as pas tort, il le faut

    ++

  13. #13
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Merci beaucoup pour les opinions!

    La discussion est maintenant resolue!

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 12/03/2014, 21h28
  2. Calculer le produit des valeurs d'une colonne
    Par AJ_ing dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 19/06/2012, 06h53
  3. [C#] Changer les couleurs des titres colonnes d'une listView
    Par ExSter dans le forum Windows Forms
    Réponses: 4
    Dernier message: 15/04/2007, 21h02
  4. [CR9]Masquer des données (colonnes) suivant valeur champ
    Par neo.51 dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 05/09/2005, 09h43
  5. Faire le produit de 2 colonnes
    Par toure32 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 07/11/2003, 20h47

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