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

Requêtes MySQL Discussion :

Mettre à jour une table avec des données de dates différentes [MariaDB]


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Analyse financière
    Inscrit en
    Mars 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Analyse financière
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2020
    Messages : 13
    Points : 13
    Points
    13
    Par défaut Mettre à jour une table avec des données de dates différentes
    Bonjour,

    J'ai une table comportant des informations sur différentes entreprises que je mets à jour annuellement, j'aimerai passer à une mise à jour trimestrielle, cependant, au trimestre, je n'ai pas toujours toutes les informations que je peux récupérer à l'année, j'aimerai donc lors de la mise à jour que si la cellule est vide, alors il prenne la valeur de l'année.

    Voila une partie de la table que cela génère à l'année:

    Nom : ANNEE.PNG
Affichages : 118
Taille : 15,8 Ko

    Ensuite la mise à jour aux trimestres:

    Nom : TRIMESTRE.PNG
Affichages : 117
Taille : 14,3 Ko

    Le problème est donc que la colonne CAPITALISATION n'est pas toujours remplie, car cette information n'est pas toujours disponible, j'aimerai donc que, lorsque la cellule est vide, alors il aille chercher l'information de l'année.

    Actuellement j'utilise
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE TEMP_ENTREPRISE
    INNER JOIN ENTREPRISE ON TEMP_ENTREPRISE.id_entreprise = ENTREPRISE.id_entreprise
    SET TEMP_ENTREPRISE.CAPITALISATION = ENTREPRISE.CAPITAISATION
    WHERE ENTREPRISE.DATE = "2022-03-31" AND ENTREPRISE.TRIMESTRE = "1";

    Comment pourrais-je ajouter l'option SI ENTREPRISE.CAPITALISATION au 1er trimestre 2022 vide alors prendre l'information de l'année 2021.

    Merci

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Si la colonne contient une chaine de caractères vide, alors vous pouvez utiliser un CASE :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    update TEMP_ENTREPRISE TE  
    inner join ENTREPRISE EN
       on EN.id_entreprise = TE.id_entreprise
    set TE.CAPITALISATION = case when TE.CAPITALISATION='' then EN.CAPITALISATION else TE.CAPITALISATION

    Si la colonne est marquée "null" alors on peut soit également utiliser un case, mais de cette façon :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    update TEMP_ENTREPRISE TE  
    inner join ENTREPRISE EN
       on EN.id_entreprise = TE.id_entreprise
    set TE.CAPITALISATION = case when TE.CAPITALISATION is null then EN.CAPITALISATION else TE.CAPITALISATION

    soit utiliser la fonction COALESCE :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    update TEMP_ENTREPRISE TE  
    inner join ENTREPRISE EN
       on EN.id_entreprise = TE.id_entreprise
    set TE.CAPITALISATION = coalesce(TE.CAPITALISATION, EN.CAPITALISATION)

  3. #3
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut à tous.

    Citation Envoyé par Newo93
    Comment pourrais-je ajouter l'option SI ENTREPRISE.CAPITALISATION au 1er trimestre 2022 vide alors prendre l'information de l'année 2021.
    Ne pas écraser la valeur déjà remplie dans votre colonne capitalisation.
    A priori, la colonne est du type numérique, elle ne peut pas être vide, comme dans le cas d'une chaîne de caractères.
    Nous ne savons pas si cette colonne est marquée à NULL ou si elle est à zéro.

    Pourquoi n'utilisez vous pas les alias dans votre requête, au lieu de mettre les noms de tables ?

    Admettons qu'elle soit marquée par NULL, ce qui donne :
    Code mysql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        UPDATE TEMP_ENTREPRISE as t1
    INNER JOIN ENTREPRISE      as t2
            ON t2.id_entreprise = t1.id_entreprise
     
           SET t1.CAPITALISATION = t2.CAPITAISATION
     
         WHERE t2.DATE      = "2022-03-31"
           AND t2.TRIMESTRE = "1"
           AND t1.CAPITALISATION is NULL;
    que l'on peut remplacer par :
    Code mysql : Sélectionner tout - Visualiser dans une fenêtre à part
           AND t1.CAPITALISATION = 0;

    Cordialement.
    Artemus24.
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  4. #4
    Membre à l'essai
    Homme Profil pro
    Analyse financière
    Inscrit en
    Mars 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Analyse financière
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2020
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Merci beaucoup à vous 2, j'ai tester vos 2 solutions et cela fonctionne très bien!

    Merci encore

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/10/2015, 14h52
  2. Réponses: 3
    Dernier message: 03/04/2013, 17h34
  3. Réponses: 2
    Dernier message: 03/04/2013, 12h04
  4. [MySQL] Mettre a jour une table avec des checkbox
    Par dlecteur dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 07/09/2010, 11h50
  5. Réponses: 3
    Dernier message: 18/07/2006, 17h37

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