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

Développement SQL Server Discussion :

Update avec 2 base liées


Sujet :

Développement SQL Server

  1. #1
    Membre à l'essai Avatar de Aro-concept
    Homme Profil pro
    Automaticien Roboticien
    Inscrit en
    Février 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Automaticien Roboticien
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 22
    Points : 11
    Points
    11
    Par défaut Update avec 2 base liées
    Bonjour a tous

    Je suis débutant en sql, j’aimerais faire une requête mais je ne sais pas si c’est possible :

    Voici mes données :
    Mes 2 Bases sont dans la même base
    - Base 1
    o Table Article
     AR_REF
     AR_ DELAI
    - Base 2
    o Table Gamme
     CODE_GAMME
     TPS_R
     TPS_P

    Additionner les TPS _R et TPS _P
     Si la somme est > 24 (h) alors on met arrondi sup (Résultat /24) dans AR _ DELAI ou il y a CODE_GAMME = AR_REF et .....


    Sinon la somme est <= 24 (h) alors on met 1 dans AR _ DELAI ou il y a CODE_GAMME = AR_REF and ....


    Merci de votre aide par avance

    Ronan

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Bonjour,

    Citation Envoyé par Aro-concept Voir le message
    j’aimerais faire une requête mais je ne sais pas si c’est possible :
    C'est possible.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre à l'essai Avatar de Aro-concept
    Homme Profil pro
    Automaticien Roboticien
    Inscrit en
    Février 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Automaticien Roboticien
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Et auriez vous des zxemple de liaisons qui peuvent maider

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Essayez ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    update art
       set art.AR_DELAI = case
                            when gam.TPS_R + gam.TPS_P > 24
                            then ceil((TPS_R + TPS_P) / 24.000)
                            else 1
                          end
      from base1.Article as art
      join base2.Gamme   as gam on gam.CODE_GAMME = art.AR_REF;

  5. #5
    Membre à l'essai Avatar de Aro-concept
    Homme Profil pro
    Automaticien Roboticien
    Inscrit en
    Février 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Automaticien Roboticien
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Merci beaucoups pour ce bout de code
    je vois maintenant comment faire

    Ca marche bien pour la liaison des bases
    juste que il passe tout le temps par le else et malgré un valeur supérieur a 24

    Ronan

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Il faut vérifier vos types et vos unités.

  7. #7
    Membre à l'essai Avatar de Aro-concept
    Homme Profil pro
    Automaticien Roboticien
    Inscrit en
    Février 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Automaticien Roboticien
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Bonjour

    Voici le code remis avec les bon nom
    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
     
     
    DECLARE @Heure DECIMAL (18,6);
     
     
    SET @Heure = 8.000000
     
     
    UPDATE art
    	SET art.AR_Delai = 3,
    	art.AR_DelaiFabrication = CASE
    	WHEN   ((gamme.TPS_REGL_MA  + gamme.TPS_USIN_MA)   > @Heure)
    	THEN CEILING ((gamme.TPS_REGL_MA + gamme.TPS_USIN_MA) / @Heure)
    	--ELSE 1
    	END
    	FROM [AUMATECH].[dbo].F_ARTICLE AS art
    	join [SAGE100GP].[dbo].T_GAMME_DETAIL   AS gamme ON gamme.CODE_GAMME = art.AR_REF
    	WHERE art.AR_Ref = 'AA00000084-ARM'
    	AND art.FA_CodeFamille = 'PFS' OR art.FA_CodeFamille = 'PF' OR art.FA_CodeFamille = 'SF'

  8. #8
    Membre à l'essai Avatar de Aro-concept
    Homme Profil pro
    Automaticien Roboticien
    Inscrit en
    Février 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Automaticien Roboticien
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    la valeur total des temp est de 45.02 donc il devrait partir dans le then
    je ne comprend pas les unités
    excuser moi de vous déranger mais c'est un peu nouveaux tout cela.

    en tous cas merci de votre aide.

  9. #9
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Quels sont les types des colonnes TPS_REGL_MA et TPS_USIN_MA ?
    Et exécutez ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select CODE_GAMME, TPS_REGL_MA, TPS_USIN_MA
         , TPS_REGL_MA + TPS_USIN_MA
         , (TPS_REGL_MA + TPS_USIN_MA) / 8.000
         , ceiling((TPS_REGL_MA + TPS_USIN_MA) / 8.000)
         , case
             when TPS_REGL_MA + TPS_USIN_MA  > 8.000
             then ceiling ((TPS_REGL_MA + TPS_USIN_MA) / 8.000)
           end
      from [SAGE100GP].[dbo].T_GAMME_DETAIL
     where CODE_GAMME = 'AA00000084-ARM'

  10. #10
    Membre à l'essai Avatar de Aro-concept
    Homme Profil pro
    Automaticien Roboticien
    Inscrit en
    Février 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Automaticien Roboticien
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    (decimal(18,6),non NULL)

  11. #11
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    J'ai édité pour vous demandez une requête supplémentaire.

  12. #12
    Membre à l'essai Avatar de Aro-concept
    Homme Profil pro
    Automaticien Roboticien
    Inscrit en
    Février 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Automaticien Roboticien
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    ca me donne cela
    Nom : Capture.PNG
Affichages : 348
Taille : 29,5 Ko

  13. #13
    Membre à l'essai Avatar de Aro-concept
    Homme Profil pro
    Automaticien Roboticien
    Inscrit en
    Février 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Automaticien Roboticien
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    les résultats de l'avant dernier colonnes est super il faudrait faire la somme de cela pour mettre dans mon delai

  14. #14
    Membre à l'essai Avatar de Aro-concept
    Homme Profil pro
    Automaticien Roboticien
    Inscrit en
    Février 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Automaticien Roboticien
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Nom : Capture.PNG
Affichages : 340
Taille : 30,9 Ko

    Ce que je souhaiterais c'est

    Delai =

    When sum(Total1) > 8.000
    Then sum(Total2)
    Else 1



    mais quand j'essaye cela ca fonctionne pas

  15. #15
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Voilà c'est ce que voulais voir
    Quelles sont les unités dans vos colonnes TPS_REGL_MA et TPS_USIN_MA ?
    Des minutes, des heures, des jours, autre ?

    Et surtout on voit que vous avez plusieurs lignes de détail, il faudra au préalable les agréger je suppose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      select CODE_GAMME
           , sum(TPS_REGL_MA) as TPS_REGL_MA_sum
           , sum(TPS_USIN_MA) as TPS_USIN_MA_sum
           , sum(TPS_REGL_MA + TPS_USIN_MA)
           , sum(TPS_REGL_MA + TPS_USIN_MA) / 8.000
           , ceiling(sum(TPS_REGL_MA + TPS_USIN_MA) / 8.000)
           , case
               when sum(TPS_REGL_MA + TPS_USIN_MA)  > 8.000
               then ceiling (sum(TPS_REGL_MA + TPS_USIN_MA) / 8.000)
             end
        from [SAGE100GP].[dbo].T_GAMME_DETAIL
       where CODE_GAMME = 'AA00000084-ARM'
    group by CODE_GAMME;

  16. #16
    Membre à l'essai Avatar de Aro-concept
    Homme Profil pro
    Automaticien Roboticien
    Inscrit en
    Février 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Automaticien Roboticien
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Dans les Tps c'est des heures
    Sachant que dans mon délai je peut mettre que des jours entier

    c'est exactement ca mais comment on peut imbriquer un update avec un select et des case.

    Nom : Capture.PNG
Affichages : 337
Taille : 26,5 Ko

  17. #17
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Comme 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
    ;with cte_gamme (CODE_GAMME, DELAI) as
    (
      select CODE_GAMME
           , case
               when sum(TPS_REGL_MA + TPS_USIN_MA) > 8.000
               then ceiling (sum(TPS_REGL_MA + TPS_USIN_MA) / 8.000)
               else 1
             end
        from [SAGE100GP].[dbo].T_GAMME_DETAIL
    group by CODE_GAMME
    )
    update art
       set art.AR_DELAI   = gam.DELAI
      from base1.Article as art
      join cte_gamme     as gam
        on gam.CODE_GAMME = art.AR_REF
     where art.AR_DELAI  is null
       and gam.DELAI     is not null
        or art.AR_DELAI  <> gam.DELAI;

  18. #18
    Membre à l'essai Avatar de Aro-concept
    Homme Profil pro
    Automaticien Roboticien
    Inscrit en
    Février 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Automaticien Roboticien
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    c'est nickel

    ca a l'air de répondre a ma demande je vous remercie vraiment bcps

    je vais essayer de comprendre le code car je ne vois pas ce que c'est le WITH

  19. #19
    Membre à l'essai Avatar de Aro-concept
    Homme Profil pro
    Automaticien Roboticien
    Inscrit en
    Février 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Automaticien Roboticien
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Bonjour

    cela fonctionne tres bien.
    j'essaye depuis quelque jours sur un code du meme type et avec un with de rajouter un Where mais je n'arive pas
    Pouvez vous me donner un petit coups de pouce dessus.

    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
    ;WITH cte_doc (AR_Ref, delaitemp) AS
    (
    SELECT
    AR_Ref
    ,MAX((((DATEDIFF(day, DO_Date, DO_DateLivr)/7)*5))) 
    FROM F_DOCLIGNE  
    GROUP BY AR_Ref
    )
     
    UPDATE artf
    SET
    AF_DelaiAppro = doc.delaitemp
    FROM [AUMATECH].[dbo].F_ARTFOURNISS AS artf
     
    join cte_doc AS doc ON doc.AR_REF = artf.AR_REF
    join F_ARTFOURNISS   AS fourn ON fourn.AR_REF = artf.AR_REF
    join F_ARTICLE AS art ON art.AR_Ref = doc.AR_Ref
    join F_DOCLIGNE AS docl ON docl.AR_Ref = doc.AR_Ref
    join F_COMPTET AS tiers ON tiers.CT_Num = artf.CT_Num
     
    WHERE 
    docl.DO_Type = '12'
    and tiers.CT_DelaiAppro = 0
    and doc.delaitemp > 0
    je souhaiterais dans le With mettre un Where de la table F_ARTFOURNISS et la colonnes AF_Principal = 1

    merci par avance

Discussions similaires

  1. [AC-2000] UPDATE avec 2 tables liées et 2 paramètres (1 par table)
    Par Michocs17141 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 05/06/2012, 17h21
  2. UPDATE d'une base donnée avec DTS
    Par cosa nostra dans le forum SSIS
    Réponses: 1
    Dernier message: 06/05/2008, 08h43
  3. Vitesse d'Access avec 2 bases liées
    Par OtObOx dans le forum Modélisation
    Réponses: 6
    Dernier message: 26/04/2008, 07h58
  4. Comment faire une moyenne avec une base de données liée ?
    Par BXDSPORT dans le forum Bases de données
    Réponses: 3
    Dernier message: 12/11/2007, 20h43
  5. Export de base avec des tables liées
    Par Yali dans le forum Administration
    Réponses: 6
    Dernier message: 31/03/2006, 10h31

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