C'est un peut difficile à gérer tout ça hahaha :mouarf::mouarf::mouarf:
Version imprimable
Soit on fait dans le léger : on ajoute un attribut Note à la table DIFF_AXLE, permettant de noter où se trouve désormais le différentiel ;Citation:
Envoyé par ordigil
Soit on fait dans le lourd en établissant un lien entre les tables DIFF_AXLE et LOCAL (avec gestion de la bilocation Local/essieu…)
Qu’en pensez-vous ?
Le problème qui se pose est: Disons que j'enlève le Forward Axle d'un camion…… Est-ce que le différentiel va rester associé au Camion ???? Il ne faut en aucun cas associer les différentiels aux camions. Les différentiels doivent être associés aux Axles… Et à l'aide de la vue que vous avez créé, il est possible de savoir sur quel camion est le différentiel.
Pour la Table Camion, en ce qui concerne les GAWR, nous devrions adopter le Standard de Freightliner, c'est à dire de nommer les GAWR ( Je parle de la Table CAMION uniquement pour l'instant) de cette façon : FRGAWR, 2FRGAWR, 1INTGAWR, 2DNINTGAWR, 3RDINTGAWR, 4THINTGAWR, 5THINTGAWR, 6THINTGAWR, REARGAWR...
J'ai un autre petit problème…. Lorsque j'utilise un VARCHAR, disons CamionNumber VARCHAR(10) et que j'entre 2540 dans une colonne et 23456 dans une autre colonne…. et que je demande à SQL Server de les mettre en ordre croissant, j'obtiens 2540, 23456... Est-ce que SQL Server met des espaces à droite par défaut pour remplir les colonnes ?????
Reprenons l’exemple précédent, historisant les affectations des différentiels :Citation:
Envoyé par ordigil
Je rappelle d’abord que depuis l’apparition de la table AXLE et sa connexion avec la table DIFFERENTIAL, il n’est plus possible d’associer directement un différentiel à un camion, l’association n’est possible que via l’essieu hébergeant le différentiel (transitivité...)
Le différentiel EARear01 a été désinstallé de l’essieu EA983246834TON832HH8 le 2018_07_15 : depuis cette date, il n’est donc plus affecté au camion 1FUJGLDR2ALAR5712. Au fond, pour savoir si à la date J1, par exemple aujourd’hui, le différentiel D1 est présent sur le camion C1, il faut et il suffit qu’il soit hébergé par l’essieu A1, et que celui-ci soit présent sur C1 à J1.
En toute logique, SQL Server a raison. Si vous souhaitez l’ordre 23456, 2540, c’est à vous de lui présenter les valeurs par exemple sous la forme de 10 caractères, '2540xxxxxx' et '23456xxxxx'. Je ne suis qu’un utilisateur occasionnel de SQL Server : le mieux est de poser la question dans le forum ad-hoc.Citation:
Envoyé par ordigil
J’ai déjà proposé deux solutions dans le post #542.Citation:
Envoyé par ordigil
3e solution : s’il s’agit simplement de savoir si D1 est en votre possession ou bien s’il a été vendu, un attribut DateSold pour la table DIFFERENTIAL pourrait convenir.
Que choisissez-vous parmi les 3 possibilités ?
C'est plutôt ça que j'ai besoin XXXXXX2540, XXXXX23456. Je sais qu'il y a une façon et je pense que c'est la même façon pour tous les SGBD… Je vais simplement regarder la documentation… C'est trop facile poser des question, il faut aussi faire un petit effort par soi-même. :oops::oops::oops:
Quelque chose comme ça :Citation:
Envoyé par ordigil
select concat (left('xxxxxxxxxxxx',COL_LENGTH('camion', 'camionnumber') - len(camionnumber)), camionnumber) from camion ;
Laquelle des 3 vous paraît la plus facile ?Citation:
Envoyé par ordigil
J'avais le Camion VIN 1FUJGLD68GLGT6928 qui devait ne pas changer car il servait de modèle…. J'essaie de le reconstruire…… C'est l'enfer, l'utilisateur final n'y arrivera jamais et il n'utilisera pas la base de donnée si on ne simplifie pas les choses…. Le Moteur Serial 472909S0314133 était associé à ce camion et il s'est retrouvé vendu….. Je l'ai effacé de Composant_affectation, après une heure, j'ai été incapable de le réassocié au Camion….. Vous ne voulez pas qu'on efface, mais il faut que ce soit gérable… Maintenant j'ai : Camion VIN 1FUJGLD68GLGT6928, Moteur Serial 472909S0314133, CamionNumber 2540..... Il faut lui associer ''TransmissionNumeroSerie = S1128413, Manufacturer = Fuller, Model = RTLO-16918B'' Il faut lui associer FrontAxle NumeroSerie = 739912-A559224, Manufacturer = Mercedes Benz, Model = F133-3N D739912, GAWR =13300, Series = F3...….. Forward Axle Numero de série = FOR03144562, Manufacturer = Timkem-Detroit, Model = MP-20-14X, GAWR = 20000...….. Rear Axle Numero de Série = FOR03144563, Manufacturer = TimKem_Detroit, Model = MR-20-14X, GAWR = 20000..... Je n'ai pas les numéros de série des différentiels…. On utilise les Numéros de série des AXLES et on ajoute un -D à la fin du numéro de série pour signifier Différentiel, Donc Forward DIFF Numero de série = FOR03144562-D, Manufacturer = Timkem_Detroit, DiffType = Forward, Ratio = 355, DiffLock = Yes, DiffPowerDividerLock = Yes……. REAR DIFF Numero de série = FOR03144563-D, Manufacturer = Timkem_Detroit, DiffType = Forward, Ratio = 355, DiffLock = Yes, DiffPowerDividerLock = No…...
Je dois m'absenter quelques heures car j'ai un camion à réparer ici :calim2::calim2::calim2::(:(:( J'en ai pour quelques heures…. Peut-être rêverez-vous aux anges lorsque je reviendrai :mouarf::mouarf::mouarf:
En principe tout les Camions devraient maintenant avoir un Front Axle à moins que je me sois trompé quelque part :roll::roll::roll:
Par contre la vue CAMION_COMPOSITION_V ne retourne pas les essieux :(:(:(
WITH t1 AS (SELECT DISTINCT x.CamionVIN , x.CamionNumber , y.LocalisationId , MAX(y.ComposantInstallationDate) AS AxleInstallationDate , y.ComposantId FROM dbo.CAMION AS x INNER JOIN dbo.COMPOSANT_AFFECTATION AS y ON x.CamionId = y.LocalisationId INNER JOIN dbo.AXLE AS z ON y.ComposantId = z.ComposantId INNER JOIN dbo.COMPOSANT AS t ON t.ComposantId = y.ComposantId GROUP BY y.LocalisationId , x.CamionVIN , x.CamionNumber , y.ComposantId) , t2 AS (SELECT y.AxleId , MAX(y.DiffInstalDate) AS theDiffInstalDate FROM dbo.DIFF_AXLE AS y INNER JOIN dbo.DIFFERENTIAL AS z ON z.DiffId = y.DiffId WHERE (z.DiffType = 'Front') GROUP BY y.AxleId) , t3 AS (SELECT DISTINCT t1.CamionVIN , t1.CamionNumber , t2.AxleId , x.DiffId , z.AxleSerialNumber , t1.AxleInstallationDate , y.DiffSerialNumber , t2.theDiffInstalDate AS DiffInstallationDate FROM t2 INNER JOIN dbo.DIFF_AXLE AS x ON t2.AxleId = x.AxleId AND x.DiffInstalDate = t2.theDiffInstalDate INNER JOIN t1 ON t1.ComposantId = t2.AxleId INNER JOIN dbo.DIFFERENTIAL AS y ON x.DiffId = y.DiffId INNER JOIN dbo.AXLE AS z ON t2.AxleId = z.ComposantId) SELECT CamionVIN , CamionNumber , AxleSerialNumber AS FrontAxleSerialNumber , AxleInstallationDate , DiffSerialNumber AS FrontNumeroSerie , DiffInstallationDate AS FrontInstallationDate FROM t3
Et votre CamionNumber 23003, vous lui en avez mis des essieux, j'espère que vous vous réservez un budget pour le remplacement des pneus :ptdr::ptdr::ptdr::ptdr:
Bonjour Ordigil,
La vue CAMION_COMPOSITION_V permet de connaître chaque essieu hébergeant un différentiel.
J’ai créé une vue CAMION_COMPOSITION_V2 plus complète, avec pour chaque camion, les essieux non affectés à des différentiels. J’ai fait au plus simple, la présentation n’est pas très ergonomique, mais pouvez-vous vérifier la complétude de cette vue ?
J’ai laissé quelques camions sans essieux...
Vue CAMION_COMPOSITION_V2 :
GO CREATE VIEW CAMION_COMPOSITION_V2 (CamionVIN, CamionNumber , MoteurNumeroSerie, TransmissionNumeroSerie , FrontAxleSerialNumber, FrontNumeroSerie , ForwardAxleSerialNumber, ForwardNumeroSerie , RearAxleSerialNumber, RearNumeroSerie , AxleSansDifferentiel, AxleSansDifferentielType) AS SELECT x.CamionVIN, x.CamionNumber , COALESCE(MoteurNumeroSerie, '??') AS MoteurNumeroSerie , COALESCE(TransmissionNumeroSerie, '??') AS TransmissionNumeroSerie , COALESCE(FrontAxleSerialNumber, '??') AS FrontAxleSerialNumber , COALESCE(FrontNumeroSerie, '??') AS FrontNumeroSerie , COALESCE(ForwardAxleSerialNumber, '??') AS ForwardAxleSerialNumber , COALESCE(ForwardNumeroSerie, '??') AS ForwardNumeroSerie , COALESCE(RearAxleSerialNumber, '??') AS RearAxleSerialNumber , COALESCE(RearNumeroSerie, '??') AS RearNumeroSerie , '-' AS AxleSansDifferentiel, '-' AS AxleSansDifferentielType FROM CAMION AS x FULL JOIN CAMION_MOTEUR_V AS y ON x.CamionVIN = y.CamionVIN FULL JOIN CAMION_TRANSMISSION_V AS z ON x.CamionVIN = z.CamionVIN FULL JOIN CAMION_FRONT_V AS t ON x.CamionVIN = t.CamionVIN FULL JOIN CAMION_FORWARD_V AS u ON x.CamionVIN = u.CamionVIN FULL JOIN CAMION_REAR_V AS v ON x.CamionVIN = v.CamionVIN UNION ALL SELECT x.CamionVIN, x.CamionNumber , COALESCE(MoteurNumeroSerie, '??') AS MoteurNumeroSerie , COALESCE(TransmissionNumeroSerie, '??') AS TransmissionNumeroSerie , '-', '-', '-', '-', '-', '-' , t.AxleSerialNumber, AxleType FROM CAMION AS x FULL JOIN CAMION_MOTEUR_V AS y ON x.CamionVIN = y.CamionVIN FULL JOIN CAMION_TRANSMISSION_V AS z ON x.CamionVIN = z.CamionVIN JOIN CAMION_AXLE_V AS t ON x.CamionVIN = t.CamionVIN JOIN AXLE AS u ON t.AxleSerialNumber = u.AxleSerialNumber WHERE NOT EXISTS (SELECT '' FROM DIFF_AXLE AS v WHERE u.ComposantId = v.AxleId) ; GO
fsmrel, avez-vous fait un drop de la BD 'DZINDZIO_TRUCKS_MANAGEMENT_TEST' et recréez avec 'TEMP' ou avez-vous simplement mis à jour 'DZINDZIO_TRUCKS_MANAGEMENT_TEMP' ??? 8O8O8O