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

Schéma Discussion :

Maintenance de camions


Sujet :

Schéma

  1. #641
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    Nous ne sommes pas encore fixés sur la langue utilisée dans la BD…. Moitié anglais, moitié français

    ...TruckVIN, TruckNumber, FrontAxleSerialNumber, FrontAxleInstallDate, FrontDiffSerialNumber, FrontDiffInstallDate,...



      0  0

  2. #642
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    Hmmmmmm Il y a des manufacturiers qui nomment le Forward = Front
    Sur un tandem ça donne Forward = FrontRear et Rear = RearRear




    Citation Envoyé par fsmrel
    Je crois savoir qu’il y a une différence entre front et forward
      0  0

  3. #643
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Je n’ai pas mis à jour DZINDZIO_TRUCKS_MANAGEMENT_TEMP parce que j’y ficherais la patouille, il faut déjà, comme je l’ai dit, que je fasse le ménage chez moi, et il y a du boulot...
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      1  0

  4. #644
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    J’ai modifié le script du post #635 : ajout de la jointure avec CAMION pour t3 :

    , t3 AS (
             SELECT DISTINCT k.CamionVIN, k.CamionNumber, t1.ComposantId, x.DiffId
                           , AxleSerialNumber, AxleInstallationDate
                           , DiffSerialNumber, theDiffInstalDate AS DiffInstallationDate, DiffType
             FROM   t1 JOIN AXLE AS z ON t1.ComposantId = z.ComposantId
                      LEFT JOIN t2 ON t1.ComposantId = t2.AxleId
                      FULL JOIN DIFF_AXLE as x on t2.Axleid = x.Axleid AND DiffInstalDate = theDiffInstalDate 
                      LEFT JOIN DIFFERENTIAL as y on x.DiffId = y.DiffId
                      JOIN CAMION AS k ON k.CamionVIN = t1.CamionVIN
            ) 
    SELECT CamionVIN, CamionNumber
         , COALESCE(AxleSerialNumber, '0') AS AxleSerialNumber, COALESCE(AxleInstallationDate, '9999-12-31') AS AxleInstallationDate
         , COALESCE(DiffSerialNumber, '0') AS DiffSerialNumber, COALESCE(DiffInstallationDate, '9999-12-31') AS DiffInstallationDate
         , COALESCE(DiffType, '0') AS DiffType   
    FROM   t3
    ;
    
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      1  0

  5. #645
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Voici la vue CAMION_FORWARD_V


     
    ----------------------------------------------------------------
    -- Les différentiels 'Forward' par camion
    ----------------------------------------------------------------   
    go
    CREATE VIEW CAMION_FORWARD_V (CamionVIN, CamionNumber, ForwardAxleSerialNumber
                                , AxleInstallationDate, ForwardNumeroSerie, ForwardInstallationDate, DiffType) 
    AS
    ----------------------------------------------------------------------------------------------------
    -- Pour chaque paire {camion, essieu} on récupère la date la plus récente d'installation d'essieu.
    -- on ne considère que les essieux de type 'forward'.
    -----------------------------------------------------------------------------------------------------       
    WITH t1 AS (
                SELECT DISTINCT CamionVIN, CamionNumber, LocalisationId, MAX(ComposantInstallationDate) AS AxleInstallationDate, y.ComposantId 
                FROM   CAMION AS x JOIN COMPOSANT_AFFECTATION AS y ON x.CamionId = y.LocalisationId
                                   JOIN AXLE AS z ON y.ComposantId = z.ComposantId    -- pour ne considérer que les essieux 
                                   JOIN COMPOSANT AS t ON t.ComposantId = y.ComposantId
                WHERE LOWER(AxleType)  = 'forward'
                GROUP BY LocalisationId, CamionVIN, CamionNumber, y.ComposantId
               )
    --------------------------------------------------------------------------
    -- Pour chaque différentiel, on récupère la date la plus récente 
    -- d'installation sur essieu. Afin d'intercepter les différentiels
    -- de type non 'forward' installés sur des essieux de type 'forward',
    -- on ne filtre pas sur le type 'forward'...
    -- Quand on aura créé le contrôle de cohérence des différentiels et des 
    -- essieux, on pourra activer le filtre...
    --------------------------------------------------------------------------- 
    , t2 AS (
             SELECT y.AxleId, MAX(DiffInstalDate) AS theDiffInstalDate
             FROM   DIFF_AXLE AS y JOIN DIFFERENTIAL AS z ON z.DiffId = y.DiffId 
    ------         WHERE  LOWER(DiffType) = 'forward'  -- filtrage des différentiels
             GROUP BY y.AxleId
            )
    ----------------------------------------------------------------------------------------------------------
    -- Pour chaque différentiel 'forward' le plus récemment installé sur essieu, on récupère les informations
    -- obtenues via les variables t1, t2, à savoir le CamionVIN, le CamionNumber, et tant qu'à faire, le
    -- numéro de série et la date d'installation de l'essieu hébergeant le différentiel. 
    -- Si un essieu 'forward' n'a pas de différentiel, au résultat la colonne ForwardNumeroSerie est forcée à 0. 
    -- Si un différentiel 'forward' n'est pas sur un essieu (gloups !) il n'est sur aucun camion : 
    -- il ne figure pas dans le résultat...  
    ----------------------------------------------------------------------------------------------------------- 
    , t3 AS (
             SELECT DISTINCT k.CamionVIN, k.CamionNumber, t1.ComposantId, x.DiffId
                           , AxleSerialNumber, AxleInstallationDate
                           , DiffSerialNumber, theDiffInstalDate AS DiffInstallationDate, DiffType
             FROM   t1 JOIN AXLE AS z ON t1.ComposantId = z.ComposantId
                      LEFT JOIN t2 ON t1.ComposantId = t2.AxleId
                      FULL JOIN DIFF_AXLE as x on t2.Axleid = x.Axleid AND DiffInstalDate = theDiffInstalDate 
                      LEFT JOIN DIFFERENTIAL as y on x.DiffId = y.DiffId
                      JOIN CAMION AS k ON k.CamionVIN = t1.CamionVIN
            ) 
    SELECT CamionVIN, CamionNumber
         , COALESCE(AxleSerialNumber, '0') AS AxleSerialNumber, COALESCE(AxleInstallationDate, '9999-12-31') AS AxleInstallationDate
         , COALESCE(DiffSerialNumber, '0') AS DiffSerialNumber, COALESCE(DiffInstallationDate, '9999-12-31') AS DiffInstallationDate
         , COALESCE(DiffType, '0') AS DiffType   
    FROM   t3
    ;
    GO
    

    
     SELECT '' AS CamionForward, * FROM CAMION_FORWARD_V ;
    
    
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      1  0

  6. #646
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    fsmrel, vous connaissez tous les Fonctions et Expressions SQL…… Donc si je comprend bien, au lieu d'avoir utilisé COALESCE, nous aurions pu arriver au même résultat avec CASE mais il aurait fallu utilisé la Fonction ''ISNULL'' ?????
      0  0

  7. #647
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Voici la vue CAMION_REAR_V

    ----------------------------------------------------------------
    -- Les différentiels 'rear' par camion
    ----------------------------------------------------------------   
    go
    CREATE VIEW CAMION_REAR_V (CamionVIN, CamionNumber, RearAxleSerialNumber
                                , AxleInstallationDate, RearNumeroSerie, RearInstallationDate, DiffType) 
    AS
    ----------------------------------------------------------------------------------------------------
    -- Pour chaque paire {camion, essieu} on récupère la date la plus récente d'installation d'essieu.
    -- on ne considère que les essieux de type 'rear'.
    -----------------------------------------------------------------------------------------------------       
    WITH t1 AS (
                SELECT DISTINCT CamionVIN, CamionNumber, LocalisationId, MAX(ComposantInstallationDate) AS AxleInstallationDate, y.ComposantId 
                FROM   CAMION AS x JOIN COMPOSANT_AFFECTATION AS y ON x.CamionId = y.LocalisationId
                                   JOIN AXLE AS z ON y.ComposantId = z.ComposantId    -- pour ne considérer que les essieux 
                                   JOIN COMPOSANT AS t ON t.ComposantId = y.ComposantId
                WHERE LOWER(AxleType)  = 'rear'
                GROUP BY LocalisationId, CamionVIN, CamionNumber, y.ComposantId
               )
    --------------------------------------------------------------------------
    -- Pour chaque différentiel, on récupère la date la plus récente 
    -- d'installation sur essieu. Afin d'intercepter les différentiels
    -- de type non 'rear' installés sur des essieux de type 'rear',
    -- on ne filtre pas sur le type 'rear'...
    -- Quand on aura créé le contrôle de cohérence des différentiels et des 
    -- essieux, on pourra activer le filtre...
    --------------------------------------------------------------------------- 
    , t2 AS (
             SELECT y.AxleId, MAX(DiffInstalDate) AS theDiffInstalDate
             FROM   DIFF_AXLE AS y JOIN DIFFERENTIAL AS z ON z.DiffId = y.DiffId 
    ------         WHERE  LOWER(DiffType) = 'rear'  -- filtrage des différentiels
             GROUP BY y.AxleId
            )
    ----------------------------------------------------------------------------------------------------------
    -- Pour chaque différentiel 'rear' le plus récemment installé sur essieu, on récupère les informations
    -- obtenues via les variables t1, t2, à savoir le CamionVIN, le CamionNumber, et tant qu'à faire, le
    -- numéro de série et la date d'installation de l'essieu hébergeant le différentiel. 
    -- Si un essieu 'rear' n'a pas de différentiel, au résultat la colonne RearNumeroSerie est forcée à 0. 
    -- Si un différentiel 'rear' n'est pas sur un essieu (gloups !) il n'est sur aucun camion : 
    -- il ne figure pas dans le résultat...  
    ----------------------------------------------------------------------------------------------------------- 
    , t3 AS (
             SELECT DISTINCT k.CamionVIN, k.CamionNumber, t1.ComposantId, x.DiffId
                           , AxleSerialNumber, AxleInstallationDate
                           , DiffSerialNumber, theDiffInstalDate AS DiffInstallationDate, DiffType
             FROM   t1 JOIN AXLE AS z ON t1.ComposantId = z.ComposantId
                      LEFT JOIN t2 ON t1.ComposantId = t2.AxleId
                      FULL JOIN DIFF_AXLE as x on t2.Axleid = x.Axleid AND DiffInstalDate = theDiffInstalDate 
                      LEFT JOIN DIFFERENTIAL as y on x.DiffId = y.DiffId
                      JOIN CAMION AS k ON k.CamionVIN = t1.CamionVIN
            ) 
    SELECT CamionVIN, CamionNumber
         , COALESCE(AxleSerialNumber, '0') AS AxleSerialNumber, COALESCE(AxleInstallationDate, '9999-12-31') AS AxleInstallationDate
         , COALESCE(DiffSerialNumber, '0') AS DiffSerialNumber, COALESCE(DiffInstallationDate, '9999-12-31') AS DiffInstallationDate
         , COALESCE(DiffType, '0') AS DiffType   
    FROM   t3
    ;
    GO
    

    
    SELECT '' AS CamionRear, * FROM CAMION_REAR_V ;
    
    

    Je n’ai rien fait pour les 2ndFront et les pushers.

    Je n’ai pas touché à la vue CAMION_COMPOSITION_V, car normalement son code n’est pas impacté.

    Je n’ai pas touché à la vue CAMION_COMPOSITION , car normalement son code n’est pas impacté.

    J’ai mis à jour DZINDZIO_TRUCKS_MANAGEMENT_TEMP, à vos risques et périls... Il faudra que pense à remettre les différentiels que j’ai virés.

    Il faudrait que je songe à aller faire dodo, j’ai le nez qui tombe sur les touches du clavier...
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      1  0

  8. #648
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    Merci fsmrel, pendant que vous dormirez, je m'amuserez un peu avec DZINDZIO_TRUCKS_MANAGEMENT_TEMP
    Passez une belle nuit
      1  0

  9. #649
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par ordigil Voir le message
    fsi je comprend bien, au lieu d'avoir utilisé COALESCE, nous aurions pu arriver au même résultat avec CASE mais il aurait fallu utilisé la Fonction ''ISNULL''
    Je ne sais pas, car ISNULL ne faitsant pas partie de la norme SQL, je ne l'utilise donc pas…
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      1  0

  10. #650
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonjour Ordigil,


    J’ai créé le trigger DIFF_AXLE_INSERT_TR qui a pour objet de s’assurer lors d’un INSERT dans la table DIFF_AXLE :

    1. Qu’un différentiel n’est pas en même temps sur deux essieux ;

    2. Qu’un essieu n’héberge pas en même temps deux différentiels ;

    3. Que le type d’un essieu et celui du différentiel hébergé sont les mêmes ;

    4. Que le manufacturier d’un essieu et le manufacturier du différentiel hébergé sont le même.

    Il faudra que je traite de l’UPDATE de la table DIFF_AXLE et du DELETE.

    J’ai créé la vue DIFF_AFFECTATION_AXLE et le trigger DIFF_AFFECTATION_AXLE_INSERT_TR qui ont pour objet de simplifier la saisie des données (INSERT) de la table DIFF_AXLE.
    Là aussi, il faudra que je m’occupe de l’UPDATE et du DELETE.

    Je joins un jeu d’essai minimal pour tester. Ça commence par un BEGIN TRANSACTION et ça se termine par un ROLLBACK pour éviter de mettre à jour les tables de façon permanente.

    A noter que si l’on ne fournit pas de date d’installation du différentiel, par défaut c’est la date d’achat de celui-ci. Si l’on ne fournit pas de date de désinstallation, par défaut c’est le '9999-12-31'.


    BEGIN TRANSACTION ;
    
    DELETE FROM DIFFERENTIAL WHERE DiffSerialNumber = 'diffFront16156' ;
    
    SELECT * FROM DIFFERENTIAL ;
    
    INSERT INTO DIFFERENTIAL_COMPOSANT_V (NumeroSerie, DateAchat, Fabriquant, Modele
                                        , DiffType, Ratio, GVWR, Torque, Lock, PDLock, Serie)
        SELECT 'diffFront16156', (SELECT DateAchat FROM AXLE_COMPOSANT_V WHERE NumeroSerie = 'FRONT16156'), 'Meritor', 'DIFF 40' 
             , 'rear', 374, 2000, 1000, 'Y', 'N', 'Meritor série 1'  
    ;
    
    -------------------------------------------------
    -- on oublie de fournir le numéro de l'essieu
    -------------------------------------------------
    INSERT INTO DIFF_AFFECTATION_AXLE (DiffSerialNumber)
        SELECT  'diffFront16156'
    ;
    ---------------------------------------------------
    -- on oublie de fournir le numéro du différentiel
    ---------------------------------------------------
    
    INSERT INTO DIFF_AFFECTATION_AXLE (AxleSerialNumber)
        SELECT  'FRONT16156'
    ;
    ---------------------------------------------------
    -- différentiel : numéro de série inconnu
    ---------------------------------------------------
    
    INSERT INTO DIFF_AFFECTATION_AXLE (DiffSerialNumber, AxleSerialNumber)
        SELECT  'diffFront16156$', 'FRONT16156'
    ;
    ---------------------------------------------------
    -- essieu : numéro de série inconnu
    ---------------------------------------------------
    
    INSERT INTO DIFF_AFFECTATION_AXLE (DiffSerialNumber, AxleSerialNumber)
        SELECT  'diffFront16156', 'FRONT16156$'
    ;
    
    --------------------------------------------------------------
    -- différentiel et essieu connus et de type non compatible 
    --------------------------------------------------------------
    
    INSERT INTO DIFF_AFFECTATION_AXLE (DiffSerialNumber, AxleSerialNumber)
        SELECT  'diffFront16156', 'FRONT16156'
    ;
    --------------------------------------------------------------
    -- différentiel et essieu connus et de type non compatible : 
    -- on corrige le type du différentiel
    --------------------------------------------------------------
    
    UPDATE DIFFERENTIAL SET DiffType = 'front' WHERE DiffSerialNumber = 'diffFront16156'
    
    ---------------------------------------
    -- 2e essai ! ça devrait être bon
    ----------------------------------------
    INSERT INTO DIFF_AFFECTATION_AXLE (DiffSerialNumber, AxleSerialNumber)
        SELECT  'diffFront16156', 'FRONT16156'
    ;
    -----------------------------------------------------------------------
    --Le  différentiel et l'essieu sont connus et de type compatible, 
    -- le fabriquant n'est pas celui de l'essieu
    -- on corrige le fabriquant du différentiel
    -----------------------------------------------------------------------
    UPDATE DIFFERENTIAL_COMPOSANT_V SET Fabriquant = 'fsmrel' WHERE NumeroSerie = 'diffFront16156'
    
    ---------------------------------------------
    -- nouvel essai !  ça devrait être bon
    ---------------------------------------------
    INSERT INTO DIFF_AFFECTATION_AXLE (DiffSerialNumber, AxleSerialNumber)
        SELECT  'diffFront16156', 'FRONT16156'
    ;
    
    --------------------------------------------------------------
    -- test bilocation : 2 différentiels sur le même essieu 
    --------------------------------------------------------------
    
    -- diffFront16156 désinstallé le 2018-12-10
    UPDATE DIFF_AXLE set DiffDesInstalDate = '2018-12-10' WHERE DiffId = (SELECT DiffId FROM DIFFERENTIAL WHERE DiffSerialNumber = 'diffFront16156')
    
    -- diffFront16156 : correctif du manufacturier 
    UPDATE DIFFERENTIAL_COMPOSANT_V SET Fabriquant = 'fsmrel' WHERE NumeroSerie = 'diffforward16156'
    
    -- diffforward16156 : devient du type front
    UPDATE DIFFERENTIAL SET DiffType = 'front' WHERE DiffSerialNumber = 'diffforward16156'
    
    -- diffforward16156 et diffFront16156 ne doivent pas être sur le même essieu en même temps
    INSERT INTO DIFF_AFFECTATION_AXLE (DiffSerialNumber, AxleSerialNumber, InstallDate, DesinstallDate)
        SELECT  'diffforward16156', 'FRONT16156', '2018-11-09', '9999-12-31'
    
    -- diffforward16156 et diffFront16156 peuvent se succéder sur le même essieu
    INSERT INTO DIFF_AFFECTATION_AXLE (DiffSerialNumber, AxleSerialNumber, InstallDate, DesinstallDate)
        SELECT  'diffforward16156', 'FRONT16156', '2018-12-10', '9999-12-31'
    ;
    INSERT INTO DIFF_AFFECTATION_AXLE (DiffSerialNumber, AxleSerialNumber, InstallDate, DesinstallDate)
        SELECT  'diffFront16156', 'FRONT14426', '2018-12-01', '2018-12-03'
    ;
    ---------------------------------------------
    -- un coup d'oeil en passant
    --------------------------------------------
    SELECT '' AS DIFF_AXLE, * FROM DIFF_AXLE AS x JOIN DIFFERENTIAL AS y ON x.DiffId = y.DiffId
                                                  JOIN AXLE AS z ON x.AxleId = z.ComposantId
    
    ---------------------------------------------------------------------------------------------
    -- pour test date instal et désinstal = '9999-12-31' (tentative diff sur 2 essieux à la fois)
    ---------------------------------------------------------------------------------------------
    
    INSERT INTO AXLE_COMPOSANT_V (NumeroSerie, Fabriquant, Modele, AxleType, GAWR)
        SELECT 'FRONT1615699', 'FSMREL', 'modèle fr16' 
    	      , 'FRONT', 16000 
    ;
    SELECT '' AS 'voir FRONT1615699', * FROM AXLE_COMPOSANT_V WHERE NumeroSerie = 'FRONT1615699'
    
    INSERT INTO DIFF_AFFECTATION_AXLE (DiffSerialNumber, AxleSerialNumber)
         SELECT  'diffFront16156', 'FRONT1615699'
    
    ----------------------------------------------
    -- un coup d'oeil
    ----------------------------------------------
    SELECT '' AS DIFF_AXLE, * FROM DIFF_AXLE AS x JOIN DIFFERENTIAL AS y ON x.DiffId = y.DiffId
                                                  JOIN AXLE AS z ON x.AxleId = z.ComposantId
    
    -------------------------------------------------------------------------
    -- le précédent est installé pour la période '9999-12-31', '9999-12-31' 
    -------------------------------------------------------------------------
    INSERT INTO AXLE_COMPOSANT_V (NumeroSerie, Fabriquant, Modele, AxleType, GAWR)
        SELECT 'FRONT161569988', 'FSMREL', 'modèle fr16' 
    	      , 'FRONT', 16000 
    ;
    ----------------------------------------------
    -- un coup d'oeil
    ----------------------------------------------
    SELECT '' AS 'voir FRONT161569988', * FROM AXLE_COMPOSANT_V WHERE NumeroSerie = 'FRONT161569988'
    
    INSERT INTO DIFF_AFFECTATION_AXLE (DiffSerialNumber, AxleSerialNumber, InstallDate)
         SELECT  'diffFront16156', 'FRONT161569988', '9999-12-31'
    
    ----------------------------------------------
    -- un coup d'oeil
    ----------------------------------------------
    SELECT '' AS DIFF_AXLE, DiffSerialNumber, AxleSerialNumber, DiffInstalDate, DiffDesInstalDate 
    FROM DIFF_AXLE AS x JOIN DIFFERENTIAL AS y ON x.DiffId = y.DiffId jOIN AXLE AS z ON x.AxleId = z.ComposantId
    
    ROLLBACK ;
    

    J’ai mis à jour les bases Temp et DZINDZIO_TRUCKS_MANAGEMENT_TEMP.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      1  0

  11. #651
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut Bonjour fsmrel :-)
    C'est étrange je viens juste de recevoir votre message
    Vous travaillez tellement dur sur cette BD.
    J'ai regardé plusieurs tables et vues aujourd'hui, c'est fascinant
    Ok je regarde vos deux nouvelles vues. Encore un gros merci fsmrel.
      0  0

  12. #652
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    Il y a des 'AXLE' et des 'DIFF' dont je n'aurai presque pas d'infos à la saisie et peut-être même que je ne trouverai jamais. Il va arriver que nous ayons le même No de série pour un AXLE et son DIFF car les plaques signalétiques sont manquantes. Dans ce cas nous ajouterons un A- au début du No de série pour ces 'AXLES' et un D- pour les No de série de ces 'DIFFERENTIAL'. Plus tard peut-être qu'on pourra obtenir d'un concessionnaire les No de série appropriés….
      0  0

  13. #653
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut Bonjour fsmrel :-)
    Bonjour fsmrel. Dans la Table 'AXLE' et la Vue 'AXLE_COMPOSANT_V', il ne peut pas avoir la colonne 'AxleLock' car c'est le différentiel qui prend en charge le 'AxleLock' et le 'Power Divider Lock'. Désolé si je vous ai induis en erreur…. ....
      0  0

  14. #654
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonjour Ordigil,


    Citation Envoyé par ordigil Voir le message
    Dans la Table 'AXLE' et la Vue 'AXLE_COMPOSANT_V', il ne peut pas y avoir la colonne 'AxleLock' car c'est le différentiel qui prend en charge le 'AxleLock' et le 'Power Divider Lock'.
    La table DIFFERENTIAL et la table DIFFERENTIAL_COMPOSANT_V comportent les colonnes Difflock et DiffPowerDivideLock, donc je me contente de virer la colonne AxleLock de la table AXLE et de la vue AXLE_COMPOSANT_V. C’est bon comme ça ?
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      1  0

  15. #655
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    Bonjour fsmrel


    Oui, il faut enlever ce qui est répétitif ou incohérent… Lorsque nous aurons besoin d'afficher 'AxleLock", nous savons où aller le chercher ...
    Même si je trouve quelques incohérences lorsque j'affiche les Vues, je ne les mentionne pas maintenant car je ne sais pas quelles sont les Vues qui sont terminées et celles qui ne le sont pas…
    J'ai fait la vue 'TRANSMISSION_AFFECTATION_CAMION' hier à l'aide de la vue 'MOTEUR_AFFECTATION_CAMION' et j'ai apporté les corrections pour le trigger 'TRANSMISSION_AFFECTATION_CAMION_INSERT_TR'. Ça semble fonctionner. Vous pouvez y jeter un coup d'oeil..


    Citation Envoyé par fsmrel Voir le message
    Bonjour Ordigil,


    La table DIFFERENTIAL et la table DIFFERENTIAL_COMPOSANT_V comportent les colonnes Difflock et DiffPowerDivideLock, donc je me contente de virer la colonne AxleLock de la table AXLE et de la vue AXLE_COMPOSANT_V. C’est bon comme ça ?
      1  0

  16. #656
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    C'est triste que Microsoft enlève ''Database Diagrams" de SSMS à partir de la version 18... C'était pratique pour avoir un visuel de la BD ... On dit toujours qu'une image vaut mille mots…
      0  0

  17. #657
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par ordigil
    J'ai fait la vue 'TRANSMISSION_AFFECTATION_CAMION' hier à l'aide de la vue 'MOTEUR_AFFECTATION_CAMION' et j'ai apporté les corrections pour le trigger 'TRANSMISSION_AFFECTATION_CAMION_INSERT_TR'. Ça semble fonctionner. Vous pouvez y jeter un coup d'oeil..
    Quelle base ?
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      1  0

  18. #658
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    DZINDZIO_TRUCKS_MANAGEMENT_TEMP

    Citation Envoyé par fsmrel Voir le message
    Quelle base ?
      0  0

  19. #659
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par ordigil Voir le message
    J'ai fait la vue 'TRANSMISSION_AFFECTATION_CAMION' hier à l'aide de la vue 'MOTEUR_AFFECTATION_CAMION' et j'ai apporté les corrections pour le trigger 'TRANSMISSION_AFFECTATION_CAMION_INSERT_TR'. Ça semble fonctionner.
    Effectivement, je n’avais pas encore créé le script de déclaration de la vue et le trigger d’insert, merci de l’avoir fait, ça a l’air de marcher.

    Vous aurez noté que si la date d’installation n’est pas précisée, par défaut c’est la date d’achat de la transmission qui est utilisée. Si la date de désinstallation n’est pas précisée, par défaut c’est le '9999-12-31' :

    INSERT INTO TRANSMISSION_AFFECTATION_CAMION (CamionVIN, NumeroSerie)
        SELECT 'vin01', 'Série tr01' 
    
    Il faudra que je trouve un moment pour les triggers d’UPDATE et DELETE (sans oublier l’affectation à un local...)
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      1  0

  20. #660
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    Avez-vous essayez de n'entrer aucune date d'achat ni d'installation ni de désinstallation ???? Je me suis ramassé avec un 1900-xx-xx LoL


    Citation Envoyé par fsmrel Voir le message
    Effectivement, je n’avais pas encore créé le script de déclaration de la vue et le trigger d’insert, merci de l’avoir fait, ça a l’air de marcher.

    Vous aurez noté que si la date d’installation n’est pas précisée, par défaut c’est la date d’achat de la transmission qui est utilisée. Si la date de désinstallation n’est pas précisée, par défaut c’est le '9999-12-31' :

    INSERT INTO TRANSMISSION_AFFECTATION_CAMION (CamionVIN, NumeroSerie)
        SELECT 'vin01', 'Série tr01' 
    
    Il faudra que je trouve un moment pour les triggers d’UPDATE et DELETE (sans oublier l’affectation à un local...)
      0  0

Discussions similaires

  1. Ajout dans une table et relation avec d'autres
    Par climz dans le forum Access
    Réponses: 5
    Dernier message: 12/05/2006, 15h32
  2. Création table et relations
    Par ptitdragon_eric dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/09/2005, 13h37
  3. table de relation
    Par tanjonaravelson dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 21/06/2005, 18h20
  4. Table de relation et sélection via jointure
    Par 73672 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 09/11/2004, 09h33
  5. Problème avec mes tables de relation...
    Par mmike dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/06/2003, 15h16

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